[98-100] Docker Compose 명령어와 다중 컨테이너 구성

    728x90
    반응형
    SMALL

    Docker Compose 명령어와 다중 컨테이너 구성

     

    Docker Compose 주요 명령어

    서비스 시작

    # 모든 서비스 시작
    docker-compose up
    
    # 백그라운드 모드로 시작
    docker-compose up -d

     

    서비스 중지 및 제거

    # 컨테이너 중지 및 네트워크 제거
    docker-compose down
    
    # 볼륨까지 함께 제거
    docker-compose down -v

     

    완성된 docker-compose.yaml 예시

    version: "3.8"
    
    services:
      mongodb:
        image: 'mongo'
        volumes: 
          - data:/data/db
        environment: 
          MONGO_INITDB_ROOT_USERNAME: max
          MONGO_INITDB_ROOT_PASSWORD: secret
        # 또는 환경변수 파일 사용
        env_file:
          - ./env/mongo.env
          
      backend:
        build: ./backend
        # 또는 더 상세한 빌드 설정
        # build: 
        #   context: ./backend
        #   dockerfile: Dockerfile
        #   args:
        #     some-arg: 1
        ports:
          - '80:80'
        volumes:
          - logs:/app/logs
          - ./backend:/app
          - /app/node_modules
        env_file:
          - ./env/backend.env
        depends_on:
          - mongodb
          
      frontend:
        build: ./frontend
        ports:
          - '3000:3000'
        volumes:
          - ./frontend/src:/app/src
        stdin_open: true  # -i 플래그와 동일
        tty: true         # -t 플래그와 동일
        depends_on:
          - backend
    
    volumes:
      data:
      logs:

     

    주요 구성 요소 설명

    1. 빌드 옵션
      • build: ./path: 이미지 빌드 경로 지정
      • context: Dockerfile이 참조할 수 있는 컨텍스트 설정
      • dockerfile: 사용할 Dockerfile 지정
      • args: 빌드 인수 전달
    2. 의존성 관리
      • depends_on: 서비스 간 의존성 설정
      • 지정된 서비스가 먼저 시작된 후 현재 서비스 시작
    3. 대화형 설정
      • stdin_open: true: -i 플래그 역할 (표준 입력 유지)
      • tty: true: -t 플래그 역할 (터미널 할당)
      • React 앱에 필요한 설정

     

     

    이미지 빌드와 컨테이너 이름 관리

    이미지 빌드 관련 명령어

    재빌드 옵션으로 서비스 시작

    docker-compose up --build
    • 이미지 강제 재빌드 후 컨테이너 실행
    • 소스 코드 변경 후 사용하면 유용

     

    빌드만 수행

    docker-compose build
    • 컨테이너 실행 없이 이미지만 빌드
    • 빌드 결과 확인에 유용

     

    컨테이너 이름 관리

    기본 이름 지정 규칙

    • 형식: 프로젝트폴더명_서비스명_번호
    • 예: docker-complete_mongodb_1
    • 번호는 동일 서비스의 여러 컨테이너 구분용

     

    사용자 정의 컨테이너 이름

    services:
      mongodb:
        image: 'mongo'
        container_name: mongodb
    • container_name 옵션으로 고정 이름 지정
    • 주의: 고정 이름 사용 시 동일 서비스의 복수 컨테이너 실행 불가

     

    사용 예시

    version: "3.8"
    
    services:
      mongodb:
        image: 'mongo'
        container_name: mongodb-container
        # 기타 설정...
        
      backend:
        build: ./backend
        container_name: backend-container
        # 기타 설정...
        
      frontend:
        build: ./frontend
        container_name: frontend-container
        # 기타 설정...

     

    Docker Compose를 사용하면 이러한 복잡한 설정을 단일 파일로 관리하고,

    간단한 명령어로 전체 애플리케이션 환경을 제어할 수 있습니다.

     

     

     

     

    참고

    https://www.udemy.com/course/docker-kubernetes-2022

    728x90
    반응형
    LIST

    댓글