Docker - Compose

최정환·2023년 12월 8일
0

Docker

목록 보기
6/8

목적과 사용법

Docker Compose는 컨테이너 간의 관계를 구성하고, Docker 컨테이너 실행 설정을 쉽게 읽을 수 있는 파일에 저장하는 도구입니다.
개발자 환경을 간단한 한 줄의 명령어로 시작할 수 있게 해 줍니다.

구성 요소

YAML 파일

서비스(options)에 대한 설정을 포함하는 YAML 형식의 파일입니다. 이 파일은 컨테이너, 네트워크, 볼륨 설정을 정의합니다.

CLI 도구

이 도구는 YAML 파일을 사용해 자동화를 수행합니다.
주로 로컬 개발 및 테스트 목적으로 사용됩니다.

버전 및 호환성

Compose YAML 파일은 다양한 버전을 가지고 있으며, 이는 Docker Compose의 기능 및 Docker 엔진과의 호환성에 따라 다릅니다.

YAML 파일은 docker-compose 명령어와 함께 로컬 Docker 자동화를 위해 사용되거나, Docker Swarm을 사용한 프로덕션 환경에서도 사용될 수 있습니다.

Docker Compose CLI

CLI 도구 특징

프로덕션급 도구는 아니지만 로컬 개발 및 테스트에 이상적입니다.

주요 명령어

docker-compose up: 볼륨, 네트워크를 설정하고 모든 컨테이너를 시작합니다.
docker-compose down: 모든 컨테이너를 정지시키고, 관련 컨테이너, 볼륨, 네트워크를 제거합니다.

결론

Docker Compose는 개발 과정을 간소화하고 표준화하는 데 매우 유용한 도구입니다.
YAML 파일을 통한 설정의 명확성과 CLI 도구의 간편성은 개발자의 생산성을 크게 향상시킬 수 있습니다.
특히, 여러 컨테이너를 동시에 관리하고 실행해야 하는 복잡한 애플리케이션 개발에 있어서 Docker Compose의 역할은 더욱 중요합니다.

하지만 프로덕션 환경에서는 규모 확장성, 복잡한 관리, 보안 등 제한 사항이 존재하기 때문에 프로덕션에서는 Docker Swarm나 Kubernetes 같은 도구를 사용합니다.

예시 상황

웹 서버로 nginx, 백엔드 애플리케이션 서버로 Node.js, 그리고 데이터베이스로 MongoDB를 사용합니다.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx:/usr/share/nginx/html
    depends_on:
      - app

  app:
    build: ./app
    environment:
      - DB_HOST=mongodb
    depends_on:
      - mongodb

  mongodb:
    image: mongo:latest
    volumes:
      - mongodb-data:/data/db

volumes:
  mongodb-data:

1. 서비스 구성:

web: nginx 웹 서버 컨테이너. 호스트의 80번 포트를 컨테이너의 80번 포트에 연결합니다.
app: Node.js 애플리케이션 서버. ./app 디렉토리에 있는 Dockerfile을 사용하여 이미지를 빌드합니다.
mongodb: MongoDB 데이터베이스 서버.

2.볼륨:

./nginx: 호스트의 nginx 디렉토리를 컨테이너의 웹 루트에 마운트합니다.
mongodb-data: MongoDB 데이터를 저장하는 데 사용되는 볼륨.

3.네트워크 연결:

depends_on: 서비스 간의 의존성을 정의합니다. 예를 들어, web 서비스는 app 서비스에 의존합니다.

0개의 댓글