docker-compose
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml build --no-cache
docker-compose -f docker-compose.prod.yml up -d
docker logs
docker logs name-nginx --tail 100 -f
docker logs name-fastapi --tail 100 -f
docker-compose down 후 up 만으로 수정사항 반영되는 경우는 어떤 경우이며, docker-compose build 까지 해야 하는 경우는 어떤 경우인가요? fastAPI, nginx를 사용중입니다.
Docker Compose에서 down/up만으로 충분한 경우와 build가 필요한 경우를 구분하는 핵심은 이미지 재빌드 필요 여부입니다.
down/up 만으로 충분한 경우
설정 파일 변경
docker-compose.yml 수정
docker-compose.prod.yml 수정
환경변수 변경 (.env 파일)
포트 매핑 변경
볼륨 마운트 경로 변경
네트워크 설정 변경
볼륨 마운트된 파일 수정
yaml
이런 설정에서 호스트 파일 수정
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./templates:/app/templates
호스트의 nginx.conf나 templates 폴더 내용을 수정하면 down/up만으로 반영됩니다.
외부 이미지 사용 시
yaml
services:
nginx:
image: nginx:latest # 외부 이미지 사용
build가 필요한 경우
소스 코드 변경
Python 파일 수정 (FastAPI 코드)
Dockerfile 수정
requirements.txt 변경
새로운 패키지 설치
이미지 내부 파일 변경
dockerfile
Dockerfile에서 COPY되는 파일들
COPY ./app /app
COPY requirements.txt .
RUN pip install -r requirements.txt
빌드 시점에 설치되는 요소들
apt 패키지 설치
pip 패키지 설치
이미지 내부 설정 파일 변경
실제 시나리오 예시
down/up으로 충분
bash
nginx 설정 파일 수정
vim nginx.conf
환경변수 변경
vim .env
포트 변경
vim docker-compose.yml
적용
docker-compose down
docker-compose up -d
build 필요
bash
FastAPI 코드 수정
vim app/main.py
새 패키지 추가
echo "requests==2.28.0" >> requirements.txt
Dockerfile 수정
vim Dockerfile
적용
docker-compose down
docker-compose build
docker-compose up -d
판단 기준
핵심 질문: "컨테이너 내부의 파일이 변경되었는가?"
YES → build 필요
NO → down/up만 충분
추가 고려사항:
볼륨 마운트된 파일은 호스트에서 직접 수정되므로 빌드 불필요
이미지 태그가 latest인 경우 docker-compose pull로 최신 이미지 가져올 수 있음
캐시된 레이어가 있어도 코드 변경 시에는 해당 레이어부터 재빌드됨
개발 효율성을 위해 가능한 한 볼륨 마운트를 활용하여 down/up만으로 변경사항을 반영할 수 있도록 설정하는 것이 좋습니다.
'Tech > 개발' 카테고리의 다른 글
aws EC2 서버에서 docker build 하다보면 용량문제생김 (0) | 2025.09.12 |
---|---|
DB 접근 N+1 쿼리 문제란 무엇이며 해결방법은? (0) | 2025.09.11 |
웹서버 만들기 Nginx, FastAPI 역할과 구조 및 기능 설명 (0) | 2025.09.11 |
클로드 코드 사용량이 많아지다보면 느려터지는데 원인 및 해결하기 (0) | 2025.09.10 |
CORS가 필요한 경우 vs 불필요한 경우 (0) | 2025.09.10 |