본문 바로가기
컴퓨터과학과

[Docker] docker compose up -d, docker compose up -d --build의 차이

by 공부하는노년 2025. 9. 21.
반응형

 

[Docker] docker compose up -d, docker compose up -d --build의 차이

1. docker compose up -d

  • 이미 빌드된 이미지가 있으면 그대로 사용합니다.
  • 이미지가 없으면 Dockerfile을 기반으로 최초 한 번만 빌드합니다.
  • 따라서 requirements.txt, Dockerfile, COPY된 소스 코드 등이 수정되었더라도, 기존 이미지가 남아 있으면 새 빌드가 일어나지 않고 예전 이미지로 실행됩니다.
  • → 즉, “기존 빌드를 그대로 쓰는 것”.

2. docker compose up -d --build

  • 컨테이너를 올리기 전에 이미지를 강제로 다시 빌드합니다.
  • requirements.txt, Dockerfile, 또는 COPY된 파일이 조금이라도 바뀌었다면 그 변경 사항을 반영하여 새로운 이미지를 만든 뒤 컨테이너를 실행합니다.
  • → 즉, “항상 최신 코드/설정이 반영되도록 강제 빌드 후 실행”.

3. 왜 결과가 달라졌는가?

  • 아마도 이전에 docker compose up -d로 실행했을 때는 예전 이미지가 그대로 사용되어 최신 소스나 패키지 변경이 반영되지 않았습니다.
  • docker compose up -d --build를 실행하니 강제로 새 이미지가 빌드되었고, 그 결과 정상 동작이 된 것입니다.

4. 정리 (명료하게 비교)

명령어 특징 사용 시점
docker compose up -d 기존 이미지 있으면 그대로 사용, 없으면 한 번만 빌드 코드/의존성 변경이 없을 때 빠르게 실행
docker compose up -d --build 무조건 새로 빌드 후 실행 코드나 Dockerfile, requirements.txt 등이 변경되었을 때 반드시 사용

👉 따라서, 개발 단계에서는 --build 옵션을 습관적으로 붙여 실행하는 게 안전합니다.
운영 단계(배포 시)에는 빌드 자동화를 CI/CD에서 관리하므로 보통 --build를 직접 쓰지 않고, 태그된 이미지를 가져와 실행합니다.

 

댓글