Compose-File
1 Docker Compose 파일 구조
- Docker Compose 파일은 YAML 형식으로 작성됩니다.
- 톱 레벨(Top-level) 요소는 YAML 파일의 최상위 레벨에 정의되는 주요 구성 요소입니다.
- 각 톱 레벨 요소는 특정한 목적과 역할을 가지고 있습니다.
2 name
- Docker Compose 프로젝트의 이름을 지정합니다.
- 명시적으로 지정하지 않으면 기본값이 사용됩니다.
- 환경 변수
COMPOSE_PROJECT_NAME으로 접근할 수 있습니다.
예시
name: myapp
services:
webapp:
image: nginx
command: echo "Running in ${COMPOSE_PROJECT_NAME}"
3 version
- 이전 버전과의 호환성을 위해 유지되고 있습니다.
- 최신 Docker Compose에서는 더 이상 사용되지 않으며, 사용 시 경고 메시지가 표시됩니다.
- Compose는 항상 가장 최신의 스키마를 사용합니다.
4 services
- 레퍼런스
- Docker Compose의 핵심 요소입니다.
- 실행할 컨테이너들을 정의합니다.
4.1 container_name
- 컨테이너의 이름을 명시적으로 지정합니다.
- 지정하지 않으면 Docker Compose가 자동으로 이름을 생성합니다.
- 지정된 이름은 유니크해야 합니다.
4.2 image
- 컨테이너를 생성할 때 사용할 이미지를 지정합니다.
- 태그를 함께 지정할 수 있으며, 환경 변수를 사용할 수 있습니다.
- 로컬에 이미지가 없으면 Docker Hub에서 자동으로 다운로드합니다.
4.3 restart
- 컨테이너의 재시작 정책을 설정합니다.
no: 재시작하지 않습니다.always: 항상 재시작합니다.on-failure: 오류로 인해 종료될 때만 재시작합니다.unless-stopped: 명시적으로 중지하기 전까지 항상 재시작합니다.
4.4 ports
- 호스트와 컨테이너 간의 포트 매핑을 설정합니다.
호스트포트:컨테이너포트형식으로 지정합니다.- 여러 포트를 매핑할 수 있습니다.
4.5 environment
- 컨테이너 내부에서 사용할 환경 변수를 설정합니다.
- 키-값 쌍으로 지정합니다.
- 데이터베이스 연결 정보, 설정값 등을 전달할 때 주로 사용됩니다.
4.6 depends_on
- 서비스 간의 의존성을 정의합니다.
- 지정된 서비스가 먼저 시작된 후에 현재 서비스가 시작됩니다.
- 단순히 시작 순서만 보장하며, 서비스가 완전히 준비될 때까지 기다리지는 않습니다.
4.7 networks
- 컨테이너가 연결될 네트워크를 지정합니다.
- 여러 네트워크에 동시에 연결할 수 있습니다.
- 같은 네트워크에 있는 컨테이너끼리 통신이 가능합니다.
4.8 platform
- 컨테이너가 실행될 플랫폼을 지정합니다.
- CPU 아키텍처나 운영체제를 명시적으로 지정할 수 있습니다.
- 크로스 플랫폼 환경에서 특히 유용합니다.
4.9 command
- 컨테이너가 시작될 때 실행할 명령어를 지정합니다.
- Dockerfile의 CMD 지시문을 오버라이드합니다.
- 문자열이나 배열 형태로 지정할 수 있습니다.
4.10 hostname
- 컨테이너의 호스트 이름을 설정합니다.
- 다른 컨테이너에서 이 호스트 이름으로 접근할 수 있습니다.
- 지정하지 않으면 컨테이너 ID가 호스트 이름으로 사용됩니다.