4. 응용 변형 예제
4.1 Compose 로 app + web + db 묶기
services:
app:
build: .
mem_limit: 512m
healthcheck:
test: ["CMD-SHELL", "bash -c 'cat < /dev/null > /dev/tcp/localhost/8080'"]
web:
image: nginx:1.27
depends_on:
app:
condition: service_healthy
db:
image: postgres:16
profiles: ["with-db"]db 서비스는 profiles 로 묶어 docker compose --profile with-db up 처럼 필요할 때만 띄웁니다. Oracle 이 필요하면 db 의 이미지를 gvenzl/oracle-free 로 바꿉니다.
4.2 로그 드라이버 크기 제한
docker run -d --log-opt max-size=10m --log-opt max-file=3 study/app:1.0max-size 는 로그 파일 하나의 최대 크기, max-file 은 보관할 파일 개수입니다. 둘을 곱한 크기가 컨테이너 하나당 로그가 차지할 최대 디스크입니다.
4.3 Windows Docker Desktop 볼륨 성능
docker run -v //c/project/app:/app study/app:1.0Windows 경로를 WSL2 컨테이너에 마운트하면 파일 I/O 가 느려질 수 있습니다. 빌드 산출물처럼 자주 읽고 쓰는 폴더는 WSL2 내부(\\wsl$\...)에 두는 편이 빠릅니다.
4.4 이미지 취약점 점검
docker scout cves study/app:1.0Docker Desktop 에 내장된 docker scout 로 알려진 취약점(CVE)을 이미지 안에서 검사합니다. 베이스 이미지 태그를 최신 패치 버전으로 올리는 것만으로 상당수가 해결됩니다.
4.5 디스크 정리
docker system df
docker system prune -adf 로 이미지·컨테이너·볼륨이 차지한 용량을 먼저 확인합니다. prune -a 는 사용하지 않는 이미지까지 지우므로 운영 서버에서는 신중히 씁니다.