[Docker Compose] Key features & Use cases

hyHA·2023년 11월 29일
0
post-custom-banner

Compose의 3단계 프로세스

  1. Dockerfile로 앱 환경을 정의하여 어디서나 재현할 수 있도록 한다.

    1. 도커 파일이 yaml 파일인가 💦
  2. compose.yaml에 앱을 구성하는 서비스를 파일로 정의하여 격리된 환경에서 함께 실행할 수 있도록 한다.

    compose.yaml 예시>>
    
    services:
      web:
        build: .
        ports:
          - "8000:5000"
        volumes:
          - .:/code
          - logvolume01:/var/log
        depends_on:
          - redis
      redis:
        image: redis
    volumes:
      logvolume01: {}
  3. docker compose up을 실행하면 Docker compose 명령이 전체 앱을 시작하고 실행

Key features of Docker Compose

  1. 단일 호스트에 여러 개의 격리된 환경 보유

    1. Compose는 프로젝트 이름을 사용하여 환경을 서로 격리합니다. 

      이 프로젝트 이름은 여러 가지 컨텍스트에서 사용할 수 있습니다.

      1. 단일 환경의 여러 복사본을 생성하려는 경우
        1. 개발 호스트에서 프로젝트의 각 기능 분기에 대해 안정적인 복사본을 실행하려는 경우
      2. CI 서버에서는 빌드가 서로 간섭하지 않도록 프로젝트 이름을 고유한 빌드 번호로 설정할 수 있습니다.
      3. 서로 다른 프로젝트가 서로 간섭하는 것을 방지하기 위해
        1. 공유 호스트 또는 개발 호스트에서 동일한 서비스 이름을 사용할 수 있는 서로 다른 프로젝트가 서로 간섭하는 것을 방지하기 위해
    2. 프로젝트 이름

      1. 프로젝트 디렉터리의 이름이 프로젝트 이름으로 디폴트로 설정됩니다.
      2.  [-p명령줄 옵션](https://docs.docker.com/compose/reference/) 이나 [COMPOSE_PROJECT_NAME환경 변수를](https://docs.docker.com/compose/environment-variables/envvars/#compose_project_name) 사용하여 사용자 정의 프로젝트 이름을 설정할 수 있습니다 .
  2. 컨테이너가 생성될 때 볼륨 데이터 보존

    Compose는 서비스에서 사용하는 모든 볼륨을 보존
    docker compose up 실행 시, 이전 실행에서 생성된 컨테이너를 찾으면 이전 컨테이너의 볼륨을 새 컨테이너에 복사합니다. 
    이 프로세스를 통해 볼륨에 생성한 모든 데이터가 손실되지 않도록 할 수 있습니다.

  3. 변경된 컨테이너만 다시 생성

    Compose는 컨테이너를 만드는 데 사용된 구성을 캐시합니다. 
    변경되지 않은 서비스를 다시 시작하면 Compose는 기존 컨테이너를 재사용합니다. 
    컨테이너를 재사용하면 환경을 매우 빠르게 변경할 수 있습니다.

  4. 변수를 지원하고 환경 간 컴포지션 이동을 지원 💦

    Compose는 Compose 파일의 변수를 지원합니다. 
    이러한 변수를 사용하여 다양한 환경이나 다양한 사용자에 맞게 구성을 사용자 정의할 수 있습니다.

    extends필드를 사용하거나 여러 Compose 파일을 생성하여 Compose 파일을 확장할 수 있습니다 . 
    자세한 내용은 여러 Compose 파일 작업을 참조하세요 .

Use cases of Docker Compose

  1. 개발 환경

    개발자가 프로젝트를 시작할 수 있는 편리한 방법을 제공합니다. 
    Compose는 여러 페이지로 구성된 '개발자 시작 가이드'를 머신에서 읽을 수 있는 단일 Compose 파일과 몇 가지 명령으로 줄일 수 있음

    1. Compose 명령줄 도구를 사용하여 소프트웨어를 개발할 때 격리된 환경에서 애플리케이션을 실행하고 상호 작용할 수 있도록 함
    2. Compose 파일은 애플리케이션의 모든 서비스 종속성(데이터베이스, 큐, 캐시, 웹 서비스 API 등)을 문서화하고 구성하는 방법을 제공함
    3. Compose 명령줄 도구를 사용하면 단일 명령([docker compose up](https://www.notion.so/5bf2ebe4a09e43bcb918c3a54d9160c2?pvs=21) )으로 각 종속성에 대해 하나 이상의 컨테이너를 만들고 시작 가능
  2. 자동화된 테스트 환경

    지속적인 배포 또는 지속적인 통합 프로세스에는 자동화된 테스트 도구가 중요하다.
    자동화된 엔드 투 엔드 테스트에는 테스트를 실행할 환경이 필요하다.
    Compose는 테스트 도구 모음에 대한 격리된 테스트 환경을 만들고 제거하는 편리한 방법을 제공한다. 
    Compose 파일에서 전체 환경을 정의하면 몇 가지 명령만으로 이러한 환경을 만들고 삭제할 수 있습니다.

    docker compose up -d // 서비스 및 컨테이너를 시작
    ./run_tests // 테스트를 실행
    docker compose down // 서비스 및 컨테이너를 중지하고 관련 리소스를 정리
    1. docker-compose up -d: Docker Compose를 사용하여 정의된 서비스 및 컨테이너를 시작합니다.
      • up: 서비스를 시작하라는 옵션입니다.
      • d: 백그라운드 모드에서 실행하라는 옵션입니다. 즉, 컨테이너가 화면에 출력되지 않고 백그라운드에서 실행됩니다.
    2. ./run_tests: run_tests라는 스크립트나 실행 가능한 파일을 실행합니다. 이는 특정 테스트를 실행하는 데 사용되는 것으로 추정됩니다.
    3. docker-compose down: Docker Compose를 사용하여 실행 중인 서비스 및 컨테이너를 중지하고 관련 리소스를 정리합니다.
      • down: 서비스를 중지하라는 옵션입니다.
  3. 단일 호스트 배포

    Compose는 전통적으로 개발 및 테스트 워크플로에 중점을 두었지만, 출시될 때마다 보다 프로덕션 지향적인 기능을 개발하고 있습니다.

참고
https://docs.docker.com/compose/

profile
룰루랄라
post-custom-banner

0개의 댓글