ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • docker-compose란?
    Server/Container 기술 2024. 12. 9. 17:08

    오랜만에 docker-compose로 환경을 구성하면서 정리해 두려고 한다.
     

    주요기능

    1. 멀티 컨테이너 애플리케이션 관리

    • 여러 개의 Docker 컨테이너를 하나의 구성 파일로 정의하고 실행 가능하다.
    • 웹 애플리케이션, 데이터베이스, 캐시서버 등 단일 명령으로 실행 가능하다.

    2. 의존성 관리

    • 컨테이너 간의 의존성을 정의하고 자동으로 순서를 조정할 수 있다.
    • 예: 데이터베이스 컨테이너가 준비될 때까지 웹 컨테이너 대기한다.

    3. 간편한 실행

    • 단일 명령으로 모든 컨테이너를 시작, 중지, 재시작 가능하다.

    4. 환경 파일 지원

    • .env 파일을 사용하여 환경 변수를 정의하고 재사용이 가능하다.

    5. 네트워크와 볼륨 관리

    • 네트워크 : 컨테이너 간 통신을 위한 네트워크를 자동 생성 및 관리 할 수 있다.
    • 볼륨 : 컨테이너의 데이터를 호스트에 영구적으로 저장이 가능하다.

     

    docker-compose.yml 파일 예제

    version: '3.9'
    services:
      web:
        image: nginx:latest
        ports:
          - "8080:80"
        volumes:
          - ./nginx:/usr/share/nginx/html
        networks:
          - app-network
    
      app:
        build:
          context: ./app
        ports:
          - "3000:3000"
        networks:
          - app-network
        depends_on:
          - db
    
      db:
        image: postgres:13
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
        volumes:
          - db-data:/var/lib/postgresql/data
        networks:
          - app-network
    
    volumes:
      db-data:
    
    networks:
      app-network:

     

    주요 요소 설명

    1. services

    • 실행할 컨테이너를 정의할 수 있다.

    2. networks

    • 컨테이너 간 통신을 위한 네트워크를 정의할 수 있다.

    3. volumes

    • 데이터 영속성을 위해 호스트와 컨테이너 간의 디렉토리를 공유 할 수 있다.

    4. depends_on

    • 컨테이너의 실행 순서를 정의할 수 있다.
    • 예: app는 db가 실행된 후 실행되어야 한다.

     

    docker-compose 주요 명령어

    1. 컨테이너 시작

    $ docker-compose up

    2. 컨테이너 백그라운드 실행

    $ docker-compose up -d

    3. 컨테이너 중지

    $ docker-compose down

    4. 로그 확인

    $ docker-compose logs

    5. 컨테이너 재시작

    $ docker-compose restart

    6. 기타

    $ docker-compose up --build
    $ docker-compose -f docker-compose.local.yml up -d --build

     

    Docker Compose의 장점

    • 간결한 관리 : YAML 파일로 복잡한 설정을 간단히 정리 가능하다.
    • 이식성 : 다른 개바자와 환경을 쉽게 공유 가능하다.
    • 의존성 해결 : 서비스 간의 의존성을 자동으로 처리 가능하다.
    • 유지보수 용이 : 설정 변경과 업데이트가 쉽고 명확하다.

     
    GTP등 여러 리서치 결과물들을 가지고 다시한번 머릿속에 정리하는 시간을 가져 보았다.

    'Server > Container 기술' 카테고리의 다른 글

    docker-compose 개발 환경 만들기  (1) 2024.12.09
    Colima란  (0) 2024.11.09

    댓글

Designed by Tistory.