빌드 가능한 서비스는 무시하고 서비스 이미지 풀 (pull) 하기
이 단계에서는 docker compose pull과 함께 --ignore-buildable 플래그를 사용하는 방법을 살펴보겠습니다. 이 플래그는 compose.yaml 파일에 미리 빌드된 이미지를 사용하는 서비스 외에도 Dockerfile 에서 빌드되는 서비스 (빌드 가능한 서비스) 가 포함된 경우 유용합니다. --ignore-buildable 플래그는 Docker Compose 에게 image 키를 지정하는 서비스에 대해서만 이미지를 풀 (pull) 하고 build 키를 지정하는 서비스는 건너뛰도록 지시합니다.
먼저, 빌드 가능한 서비스를 포함하도록 compose.yaml 파일을 수정해 보겠습니다. 기본 이미지를 빌드하는 간단한 서비스를 추가합니다.
~/project/my-compose-app 디렉토리에 있는지 확인합니다.
cd ~/project/my-compose-app
이제 빌드 가능한 서비스에 대한 간단한 Dockerfile 을 생성합니다.
nano Dockerfile
다음 내용을 Dockerfile에 붙여넣습니다.
FROM alpine:latest
CMD ["echo", "Hello from buildable service!"]
파일을 저장하고 nano 편집기를 종료합니다.
다음으로, 이 Dockerfile 을 사용하는 새 서비스를 포함하도록 compose.yaml 파일을 수정합니다.
nano compose.yaml
db 서비스 아래에 다음 서비스 정의를 compose.yaml 파일에 추가합니다.
builder:
build: .
완성된 compose.yaml 파일은 다음과 같아야 합니다.
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: redis:latest
builder:
build: .
파일을 저장하고 nano 편집기를 종료합니다.
이제 docker compose pull --ignore-buildable을 사용하여 이미지를 풀 (pull) 해 보겠습니다.
docker compose pull --ignore-buildable
Docker Compose 가 web 및 db 서비스를 확인하고 필요한 경우 해당 이미지를 풀 (pull) 하는 것을 확인할 수 있습니다 (이전 단계에서 이미 풀 (pull) 되었을 것입니다). 그러나 builder 서비스는 image 키 대신 build 키를 사용하므로 무시합니다. builder 서비스에 대한 이미지를 빌드하거나 풀 (pull) 하는 것과 관련된 출력은 표시되지 않습니다.
builder 서비스에 대해 이미지가 빌드되거나 풀 (pull) 되지 않았는지 확인하려면 Docker 이미지를 나열할 수 있습니다.
docker images
여전히 nginx 및 redis 이미지만 나열되어야 합니다. 이 명령으로 Dockerfile에서 생성된 새 이미지는 없을 것입니다.
이는 --ignore-buildable 플래그가 미리 빌드된 이미지만 선택적으로 풀 (pull) 할 수 있도록 하는 방법을 보여주며, 이는 다양한 개발 및 배포 시나리오에서 유용할 수 있습니다.