반응형
[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를 직접 쓰지 않고, 태그된 이미지를 가져와 실행합니다.
'컴퓨터과학과' 카테고리의 다른 글
| 클로버노트, 음성을 글로 바꾸는 똑똑한 비서 (1) | 2025.10.11 |
|---|---|
| ICT이노베이션스퀘어 우수수료생과 SW마에스트로 연계 제도 (0) | 2025.10.02 |
| Windows 알림 끄기 (1) | 2025.09.19 |
| 쿠버네티스 (1) | 2025.09.16 |
| 컨테이너와 호스트 관계 (3) | 2025.09.02 |
댓글