Docker

[Docker] 6. docker-compose.yml?

김줘 2024. 11. 15. 20:51

docker-compose.yml?

  • 컨테이너화도딘 여러 서비스를 정의하고 관리하기 위한 구성 파일
  • YAML 형식으로 작성되며, 애플리케이션 환경을 코드로 표현하여 쉽게 복제 가능

docker-compose.yml 장점

  • 여러 컨테이너를 한 번에 실행 및 관리 가능
  • 네트워크, 볼륨 등 관련 리소스를 자동으로 설정
  • 개발 환경에서 프로덕션 환경으로 쉽게 전환 가능

docker-compose.yml 주요 구성 요소

  • version
    • 파일 형식 정의
  • services
    • 애플리케이션의 각 컨테이너 정의
    • 각 서비스는 별도의 Docker 컨테이너 실행
  • image
    • 사용할 Docker 이미지 지정
  • build
    • 이미지를 직접 빌드할 경우, Dockerfile의 경로 지정
  • ports
    • 호스트 <-> 컨테이너 간의 포트 매핑
  • volumes
    • 데이터 공유를 위한 볼륨을 정의하고 마운트
    • 전역으로 볼륨을 정의하고 사용 가능
  • depends_on
    • 서비스 간 의존성 설정
  • networks
    • 서비스 간 통신을 위한 네트워크 설정

예제

  • Nginx와 Mysql로 구성된 간단한 웹 애플리케이션 예제
version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret
  • 빌드가 포함된 Flask 애플리케이션 예제
version: "3.9"
services:
  web:
    build:
      context: .
    ports:
      - "5000:5000"
    volumes:
      - "./app:/app"
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password