반응형
docker-compose
는 여러 Docker 컨테이너를 정의하고 동시에 관리할 수 있는 도구입니다. 이를 위해 docker-compose.yml
파일을 사용하며, 여기에는 다양한 서비스와 그 설정을 정의할 수 있습니다. docker-compose.yml
파일의 주요 옵션에 대해 설명드리겠습니다.
docker-compose.yml
파일의 주요 옵션
- version
- 설명: Compose 파일의 버전을 지정합니다. 다양한 기능을 지원하는 버전이 있으므로 최신 기능을 사용하려면 최신 버전을 선택하는 것이 좋습니다.
- 예시:
version: '3.8'
- services
- 설명: 이 섹션은 여러 Docker 컨테이너(서비스)를 정의합니다. 각 서비스는 별도의 컨테이너로 실행됩니다.
- 예시:
services: web: image: nginx db: image: mysql
- image
- 설명: 사용할 Docker 이미지를 지정합니다.
docker pull
명령어로 다운로드할 수 있는 이미지 이름을 명시합니다. - 예시:
services: web: image: nginx:latest
- 설명: 사용할 Docker 이미지를 지정합니다.
- build
- 설명: 이미지 빌드 지침을 지정합니다. Dockerfile이 위치한 디렉토리 경로를 설정하거나 추가적인 빌드 옵션을 설정할 수 있습니다.
- 예시:
services: web: build: ./web
- command
- 설명: 컨테이너가 시작될 때 실행할 명령을 지정합니다.
- 예시:
services: web: image: nginx command: ["nginx", "-g", "daemon off;"]
- ports
- 설명: 호스트와 컨테이너 간의 포트 매핑을 정의합니다. 형식은
호스트:컨테이너
입니다. - 예시:
services: web: image: nginx ports: - "8080:80"
- 설명: 호스트와 컨테이너 간의 포트 매핑을 정의합니다. 형식은
- volumes
- 설명: 호스트와 컨테이너 간의 볼륨을 정의합니다. 형식은
호스트:컨테이너
입니다. - 예시:
services: web: image: nginx volumes: - "./data:/var/www/html"
- 설명: 호스트와 컨테이너 간의 볼륨을 정의합니다. 형식은
- environment
- 설명: 환경 변수를 설정합니다. 각 변수를 키-값 쌍으로 지정할 수 있습니다.
- 예시:
services: web: image: nginx environment: - NGINX_HOST=localhost - NGINX_PORT=80
- env_file
- 설명: 환경 변수를 정의하는 파일을 지정합니다. 여러 파일을 지정할 수도 있습니다.
- 예시:
services: web: image: nginx env_file: - ./.env
- depends_on
- 설명: 다른 서비스에 대한 의존성을 지정합니다. 특정 서비스가 시작되기 전에 의존 서비스가 시작되도록 합니다.
- 예시:
services: web: image: nginx depends_on: - db db: image: mysql
- networks
- 설명: 서비스가 연결될 네트워크를 정의합니다. Docker Compose는 기본적으로
default
네트워크를 사용하지만, 사용자 정의 네트워크를 만들 수 있습니다. - 예시:
version: '3.8' services: web: image: nginx networks: - frontend db: image: mysql networks: - backend networks: frontend: backend:
- 설명: 서비스가 연결될 네트워크를 정의합니다. Docker Compose는 기본적으로
- restart
- 설명: 컨테이너가 종료된 후 재시작 정책을 지정합니다.
no
,always
,on-failure
,unless-stopped
등의 값을 사용할 수 있습니다. - 예시:
services: web: image: nginx restart: always
- 설명: 컨테이너가 종료된 후 재시작 정책을 지정합니다.
- links
- 설명: 다른 서비스와 연결을 설정합니다.
links
는 컨테이너 간의 네트워크 연결을 설정하며, DNS 이름 해결을 제공합니다. - 예시:
services: web: image: nginx links: - db db: image: mysql
- 설명: 다른 서비스와 연결을 설정합니다.
- healthcheck
- 설명: 컨테이너의 상태를 검사하는 명령어를 지정합니다.
- 예시:
services: web: image: nginx healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m30s timeout: 10s retries: 3
- labels
- 설명: 컨테이너에 메타데이터를 추가합니다.
- 예시:
services: web: image: nginx labels: com.example.description: "Web service"
- extra_hosts
- 설명: 컨테이너의
/etc/hosts
파일에 추가할 호스트네임-IP 쌍을 지정합니다. - 예시:
services: web: image: nginx extra_hosts: - "host.docker.internal:host-gateway"
- 설명: 컨테이너의
- cap_add / cap_drop
- 설명: 특정 Linux 기능을 컨테이너에 추가하거나 제거합니다.
- 예시:
services: web: image: nginx cap_add: - NET_ADMIN cap_drop: - CHOWN
- sysctls
- 설명: 컨테이너 내의 커널 파라미터를 설정합니다.
- 예시:
services: web: image: nginx sysctls: net.core.somaxconn: 1024
- secrets
- 설명: 민감한 정보를 안전하게 관리할 수 있는 비밀 파일을 정의합니다.
- 예시:
version: '3.8' services: web: image: nginx secrets: - my_secret secrets: my_secret: file: ./secret_file.txt
docker-compose.yml
작성 팁
- 명확한 서비스 정의: 각 서비스는 독립적이지만 필요에 따라 상호 의존 관계를 가질 수 있습니다. 명확하게 정의하여 필요한 경우에만 상호 의존성을 갖도록 합니다.
- 환경 변수 관리: 환경 변수를 사용하여 컨테이너의 동작을 제어하고,
env_file
을 활용하여 관리할 수 있습니다. - 네트워크 및 볼륨 사용: 서비스를 분리하고 상태를 유지하기 위해 네트워크와 볼륨을 적절히 활용합니다.
- 적절한 재시작 정책: 각 서비스에 대해 적절한 재시작 정책을 설정하여 서비스가 예기치 않게 중단되는 경우 자동으로 복구할 수 있도록 합니다.
이러한 옵션들을 활용하면 복잡한 Docker 환경을 쉽게 설정하고 관리할 수 있습니다.
반응형
'가상 머신 > Docker' 카테고리의 다른 글
[ 도커 / Docker ] version, info 명령어 (0) | 2024.07.03 |
---|---|
[ VM / Docker ] Nginx Image 여러 버전 확인하기 (0) | 2024.06.22 |
[ VM / Docker ] Docker에서 Image를 관리하기 - 상세 (0) | 2024.06.22 |
[ VM / Docker ] Docker에서 Image를 관리하기 - 간단 (0) | 2024.06.22 |
[ Docker ] Docker-Compose 설치하기 (0) | 2022.07.28 |