1. build - 컨테이너 빌드 관련 설정
build:
context: .
dockerfile: Dockerfile
args:
ENV_VAR_NAME: value
옵션 | 설명 |
context: . | 현재 디렉토리를 빌드 컨텍스트로 사용 |
dockerfile: Dockerfile.prod | 특정 Dockerfile을 사용 가능 |
args: | Docker 빌드 시 전달할 변수 (ARG) |
예제: Dockerfile.dev를 사용해 개발 환경 빌드
build:
context: .
dockerfile: Dockerfile.dev
2. image - 빌드 없이 특정 이미지 사용
image: my-app:latest
이미 빌드된 Docker 이미지를 사용하려면 build: 대신 image: 를 사용
Docker Hub, 프라이빗 레지스트리, 로컬 빌드 이미지 사용 가능
예제: MySQL 공식 이미지 사용
image: mysql:8.0
3. container_name: - 컨테이너 이름 지정
container_name: my-app-container
컨테이너 이름을 지정하지 않으면 랜덤한 이름이 할당됨
고유한 이름을 설정하면 관리가 편해짐
예제
container_name: kafka-broker-1
4. restart: - 컨테이너 재시작 정책
restart: always
옵션 | 설명 |
no | 자동 재시작 안 함 |
always | 컨테이너가 중지되면 항상 재시작 |
unless-stopped | 컨테이너를 수동으로 멈추지 않는 한 항상 재시작 |
on-failure | 오류 발생시만 재시작 |
예제
restart: on-failure
5. ports: - 호스트와 컨테이너 간 포트 매핑
ports:
- "8080:8080"
"호스트포트:컨테이너포트" 형식
운영 환경에서는 ports를 노출하지 않고, nginx 같은 리버스 프록시를 거치는 것이 보안적으로 더 안전
6. environment: - 환경 변수 설정
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_HOST=db
컨테이너 내부에서 사용할 환경 변수 설정
.env 파일과 함께 사용할 수도 있음
7. depends_on: - 실행 순서 제어
depends_on:
db:
condition: service_healthy
옵션 | 설명 |
depends_on: | 특정 서비스가 실행된 후에 실행되도록 설정 |
condition: service_healthy | healthcheck가 완료된 후 실행 |
예제
depends_on:
redis:
condition: service_started # Redis가 실행된 후 시작
8. volumes: - 데이터 영속화
volumes:
- ./logs:/app/logs
옵션 | 설명 |
호스트경로:컨테이너경로 | 특정 디렉토리를 마운트 |
named volume | Docker 관리 볼륨 사용 |
예제
volumes:
- db-data:/var/lib/postgresql/data
9. networks: - 네트워크 설정
networks:
- app_network
옵션 | 설명 |
default | 기본 네트워크 사용 |
custom network | 사용자 정의 네트워크 사용 |
예제: 브릿지 네트워크 사용
networks:
app_network:
driver: bridge
10. healthcheck: - 서비스 상태 확인
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8080/actuator/health || exit 1"]
interval: 10s
retries: 3
timeout: 5s
옵션 | 설명 |
test: | 실행할 상태 체크 명령어 |
interval: | 체크 간격 |
retries: | 재시도 횟수 |
timeout: | 응답 대기 시간 |
예제: PostgreSQL 상태 확인
healthcheck:
test: ["CMD-SHELL", "pg_isready -U myuser"]
interval: 10s
retries: 5
timeout: 5s
'Docker' 카테고리의 다른 글
Dockerfile 가이드 (0) | 2025.03.11 |
---|---|
Docker Compose (0) | 2025.03.10 |
Docker Desktop에서 container 실행해보기 (0) | 2025.03.10 |
Window에서 도커 설치 (0) | 2025.03.10 |
VM에 Docker 설치하기 (0) | 2025.03.10 |