DevOps 환경에서 애플리케이션을 배포하는 것은 복잡할 수 있지만, Docker Compose를 사용하면 멀티 컨테이너 애플리케이션을 효율적으로 관리하고 배포할 수 있습니다. Docker Compose는 여러 개의 컨테이너를 정의하고 실행할 수 있도록 돕는 도구로, 특히 마이크로서비스 아키텍처에서 유용하게 사용됩니다. 이번 글에서는 Docker Compose를 사용하여 멀티 컨테이너 애플리케이션을 배포하는 방법에 대해 구체적으로 알아보겠습니다.

Docker Compose 개요

Docker Compose는 YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨을 정의할 수 있게 해줍니다. 이 파일을 기반으로 여러 컨테이너를 한번에 배포하고 관리할 수 있습니다. 기본적으로 docker-compose.yml 파일을 작성하여 필요한 설정을 정의한 후, 간단한 명령어로 모든 컨테이너를 실행할 수 있습니다.

환경 설정

Docker Compose를 사용하기 위해서는 먼저 Docker가 설치되어 있어야 합니다. Docker와 Docker Compose를 설치한 후, 아래와 같이 프로젝트 디렉토리를 생성합니다.

mkdir myapp
cd myapp

docker-compose.yml 작성

이제 docker-compose.yml 파일을 생성하여 멀티 컨테이너 애플리케이션을 정의해 보겠습니다. 예를 들어, 웹 애플리케이션과 데이터베이스를 포함한 간단한 애플리케이션을 구성해보겠습니다.

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: postgres:alpine
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

위의 설정에서는 web 서비스로 Nginx를 실행하고, db 서비스로 PostgreSQL을 실행합니다. 각 서비스는 서로 의존성을 갖고 있으며, db 서비스가 먼저 실행된 후 web 서비스가 실행됩니다. 또한, 데이터베이스의 데이터를 보존하기 위해 Docker 볼륨을 사용하고 있습니다.

컨테이너 실행

이제 docker-compose.yml 파일이 준비되었으니, 아래 명령어로 컨테이너를 실행해 보겠습니다.

docker-compose up -d

위 명령어는 백그라운드에서 모든 서비스를 실행합니다. 실행 중인 컨테이너는 docker ps 명령어를 통해 확인할 수 있습니다.

컨테이너 중지 및 삭제

배포한 컨테이너를 중지하거나 삭제하려면 아래 명령어를 사용합니다.

docker-compose down

이 명령어는 모든 서비스와 네트워크를 중지하고, 생성된 컨테이너를 삭제합니다. 데이터베이스의 데이터는 Docker 볼륨을 통해 보존되므로, 데이터가 사라지지 않습니다.

Docker Compose의 이점

  1. 선언적 설정: YAML 파일로 모든 설정을 선언적으로 관리할 수 있어, 애플리케이션 구성을 쉽게 이해하고 버전 관리할 수 있습니다.
  2. 간편한 관리: 여러 컨테이너를 한 번에 시작하고 중지할 수 있어, 큰 애플리케이션을 관리할 때 유용합니다.
  3. 환경 독립성: Docker를 사용함으로써 개발 환경과 운영 환경 간의 차이를 줄일 수 있습니다.

마무리

Docker Compose를 사용하면 멀티 컨테이너 애플리케이션을 간편하게 배포하고 관리할 수 있습니다. 이번 포스팅에서 설명한 내용과 예제를 바탕으로 여러분의 애플리케이션을 Docker Compose로 손쉽게 배포해 보세요. 다양한 서비스와 복잡한 애플리케이션을 관리하는 데에 있어 Docker Compose는 매우 유용한 도구입니다. 실무에서의 활용도를 높이기 위해 추가적인 Docker Compose 기능도 학습해 보시는 것을 추천드립니다.