Docker를 사용할 때, 호스트 컴퓨터의 파일이나 디렉터리를 컨테이너로 복사하는 작업은 매우 자주 사용됩니다.
이때 사용하는 것이 바로 COPY 명령어입니다.
이번 글에서는 COPY의 기본 문법을 알아보겠습니다.
COPY란?
COPY는 호스트 컴퓨터(내 로컬)에 있는 파일이나 폴더를 컨테이너 이미지 안으로 복사하는 명령어입니다.
보통 코드, 설정 파일, 라이브러리 등을 Docker 이미지에 포함시킬 때 사용합니다.
COPY [복사할_파일_또는_폴더_경로] [컨테이너_내_경로]
예를 들어, app.txt 파일을 컨테이너 루트에 복사하고 싶다면 다음과 같이 작성합니다.
COPY app.txt /app.txt
단일 파일 복사
FROM python:3.11-slim
COPY app.txt /app.txt
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]  # 디버깅용



디렉토리 전체 복사
FROM python:3.11-slim
COPY my-app /my-app/
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
※ /text-files가 아니라 /text-files/처럼 슬래시가 꼭 붙어야 해당 디렉터리에 복사됩니다.



와일드카드 활용
Dockerfile에서는 COPY 명령에 *.txt 와일드카드 패턴을 사용할 수 있습니다.
FROM python:3.11-slim
COPY my-app/*.txt /text-files/
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]


app.py는 제외하고 txt 형식 파일들이 모두 복사된 것을 알 수 있습니다.
.dockerignore 사용하여 복사 제외하기
특정 파일은 이미지에 포함시키고 싶지 않을 때 .dockerignore를 사용합니다.
# .dockerignore 작성
app.py
# Dockerfile 작성
FROM python:3.11-slim
COPY ./ /
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]


호스트 컴퓨터의 경로 내 모든 파일들을 대상으로 복사했지만 .dockerignore에 입력한 app.py는 컨테이너에 복사되지 않은 것을 알 수 있습니다.
'MLOps > Docker' 카테고리의 다른 글
| [Docker#12] Dockerfile RUN (0) | 2025.05.12 | 
|---|---|
| [Docker#11] Dockerfile ENTRYPOINT (0) | 2025.05.12 | 
| [Docker#9] Dockerfile이란? (0) | 2025.05.12 | 
| [Docker#8] 볼륨(Volume)이란? (0) | 2025.05.08 | 
| [Docker#7] 컨테이너(Container) 내부 접속 (0) | 2025.04.29 |