
컨테이너 환경을 코드로 관리할 수 있는 docker-compose.yml은
개발 뿐만 아니라 운영 환경에서도 매우 강력한 도구입니다.
version: "3.8"
services:
my-service:
image: my-app:latest
container_name: my-app-container
deploy:
resources:
limits:
memory: 512m
cpus: "1.0"
reservations:
memory: 256m
cpus: "0.5"
Compose에서는 --memory-swap 옵션을 직접 지원하지 않아요.
💡 workaround: docker run 또는 Swarm mode를 이용해야 설정 가능
restart: unless-stopped
| 정책 | 설명 |
|---|---|
no | 자동 재시작 없음 (기본값) |
always | 무조건 재시작 (직접 중단 제외) |
on-failure | 비정상 종료 시에만 재시작 |
unless-stopped | 항상 재시작, 단 수동 중지는 예외 |
ports:
- "8080:80"
networks:
- my-bridge
networks:
my-bridge:
driver: bridge
volumes:
- ./data:/app/data
environment:
- TZ=Asia/Seoul
volumes:
- /etc/localtime:/etc/localtime:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 10s
retries: 3
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_PASSWORD=${DB_PASSWORD}
read_only: true
version: "3.8"
services:
web:
image: nginx
depends_on:
- app
- db
app:
image: my-app
depends_on:
- db
db:
image: mysql