Docker services 내부 설정 상세 정리

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