본문 바로가기

About/Docker

[Docker] Docker 빌드 컨텍스트 외부 파일 포함 방법

Docker 빌드 컨텍스트 외부 파일 포함 방법

Docker 빌드 컨텍스트란?

Docker는 컨테이너 기반 가상화 기술을 사용하는 소프트웨어입니다. Docker를 사용하면 이미지를 만들고 이를 기반으로 컨테이너를 실행할 수 있습니다. Docker 이미지는 Dockerfile이라는 파일에 정의된 내용에 따라 빌드됩니다.

Dockerfile은 Docker 이미지를 빌드하기 위한 스크립트 파일입니다. 이 파일 안에는 Docker 이미지를 빌드하는 데 필요한 모든 명령어와 파일이 포함되어 있습니다.

Dockerfile을 빌드할 때, Docker는 현재 디렉토리를 빌드 컨텍스트로 사용합니다. 빌드 컨텍스트란 Dockerfile을 빌드하기 위해 필요한 파일들이 위치한 디렉토리를 의미합니다.

하지만 때로는 Docker 이미지를 빌드할 때 빌드 컨텍스트 외부에 있는 파일을 참조해야 할 때가 있습니다. 이때는 어떻게 해야 할까요?

Dockerfile에서 외부 파일 포함하기

Dockerfile에서 빌드 컨텍스트 외부에 있는 파일을 포함하려면 COPY 명령어를 사용해야 합니다. COPY 명령어는 Dockerfile 안에서 파일을 복사하는 명령어입니다.

COPY 명령어를 사용하면 Docker 이미지를 빌드하는 동안 빌드 컨텍스트 외부의 파일을 복사할 수 있습니다. 다음은 COPY 명령어를 사용한 Dockerfile 예시입니다.

1
2
FROM ubuntu  
COPY /path/to/file /app/file
cs

 

위 예시에서는 /path/to/file이라는 경로에 있는 파일을 /app/file이라는 경로에 복사합니다. 이때 /path/to/file은 빌드 컨텍스트 외부의 파일이어야 합니다.

Docker CLI에서 외부 파일 포함하기

Docker CLI를 사용하여 Docker 이미지를 빌드할 때도 빌드 컨텍스트 외부의 파일을 포함할 수 있습니다. 이때는 -f 옵션을 사용하여 Dockerfile이 위치한 경로를 지정하고, --build-arg 옵션을 사용하여 외부 파일의 경로를 전달해야 합니다.

다음은 Docker CLI를 사용하여 빌드할 때 외부 파일을 포함하는 예시입니다.

1
docker build -/path/to/Dockerfile --build-arg FILE=/path/to/file .
cs

 

위 예시에서는 -f 옵션을 사용하여 Dockerfile이 위치한 경로를 지정하고, --build-arg 옵션을 사용하여 `FILE` 변수에 외부 파일의 경로를 전달합니다. 이때 마지막에 있는 .는 빌드 컨텍스트를 나타냅니다.