COPY : 파일 복사(이동)
의미
copy는 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달한다
사용법
# 문법
COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로]
# 예시
COPY app.txt /app.txt
파일 복사해보기
1. app.txt 파일 만들기
2. Dockerfile 만들어서 이미지 생성 및 컨테이너 실행
Dockerfile
FROM ubuntu
COPY app.txt /app.txt
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
$ docker build -t my-server .
$ docker run -d my-server
$ docker exec -it [Container ID] bash
$ ls

폴더 안에 있는 모든 파일들 복사
1. my-app 디렉터리 만들기, my-app 디렉터리 안에 파일 만들기
2. Dockerfile 만들어서 이미지 생성 및 컨테이너 실행
Dockerfile
FROM ubuntu
COPY my-app /my-app/
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
$ docker build -t my-server .
$ docker run -d my-server
$ docker exec -it [Container ID] bash
$ ls
와일드 카드 사용해보기
1. app.txt, readme.txt 파일 2개 만들기
2. Dockerfile 만들어서 이미지 생성 및 컨테이너 실행
Dockerfile
FROM ubuntu
COPY *.txt /text-files/
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
- 주의) /text-files라고 적으면 안 되고 /text-files/라고 적어야 text-files라는 디렉토리 안에 파일들이 정상적으로 복사된다
docker build -t my-server .
docker run -d my-server
docker exec -it [Container ID] bash
ls
.dockerignore 사용해보기
특정 파일 또는 폴더만 COPY를 하고 싶지 않을 수 있다. 그럴 때 .dockerignore를 활용한다
1. .dockerignore 파일 만들기
.dockerignore
readme.txt
2. Dockerfile 만들어서 이미지 생성 및 컨테이너 실행
Dockerfile
FROM ubuntu
COPY ./ /
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
$ docker build -t my-server .
$ docker run -d my-server
$ docker exec -it [Container ID] bash
$ ls
ENTRYPOINT : 컨테이너가 시작할 때 실행되는 명령어
의미
ENTRYPOINT는 컨테이너가 생성되고 최초로 실행할 때 수행되는 명령어를 뜻한다.
쉽게 설명하자면 ENTRYPOINT에는 미니 컴퓨터의 전원을 키고나서 실행시키고 싶은 명령어를 적으면 된다
사용법
# 문법
ENTRYPOINT [명령문...]
# 예시
ENTRYPOINT ["node", "dist/main.js"]
예제
Dockerfile
FROM ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
$ docker build -t my-server .
$ docker run -d my-server
$ docker ps -a
$ docker logs [Container ID]

[실습] 백엔드 프로젝트(Spring Boot) 프로젝트를 Docker로 실행시키기
여기서 진행해도 되지만 나는 인텔리제이에서 작업 했다

- Java 17 버전을 선택하자. 아래 과정을 Java17 버전을 기준으로 진행할 예정이다
2. 간단한 코드 작성
AppController
@Restcontroller
public class AppController {
@GetMapping("/")
public String home() {
return "Hello, World"
}
}
3. Dockerfile 작성하기
Dockerfile
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
4. Spring Boot 프로젝트 빌드하기
$ ./gradlew clean build
5. Dockerfile 바탕으로 이미지 빌드하기
$ docker build -t hello-server .
6. 이미지가 잘 생성됐는 지 확인하기
$ docker image ls
7. 생성한 이미지를 컨테이너로 실행시켜보기
$ docker run -d -p 8080:8080 hello-server
8. 컨테이너 잘 싱행되고 있는 지 확인하기
$ docker ps
9. localhost:8080으로 들어가보기

10. 실행시킨 컨테이너 중지 / 삭제하기, 이미지 삭제하기
$ docker stop {컨테이너 ID}
$ docker rm {컨테이너 ID}
$ docker image rm {이미지 ID}
그림으로 이해하기

'Docker' 카테고리의 다른 글
| [Docker] Docker Compose를 사용하는 이유 (0) | 2026.08.13 |
|---|---|
| [Docker] Nginx 이미지로 프론트엔드 서버 실행하기 (0) | 2026.08.12 |
| [Docker] RUN·WORKDIR·EXPOSE로 Nest.js 실행하기 (0) | 2026.08.12 |
| [Docker] Dockerfile이란? FROM으로 베이스 이미지 만들기 (0) | 2026.08.12 |
| [Docker] 컨테이너, CLI, Volume (0) | 2026.08.04 |