성장에 목마른 코린이

[배포] Docker Compose 본문

배포

[배포] Docker Compose

성장하는 코린이 2022. 11. 24. 08:58
728x90

Docker Compose

여러 개의 컨테이너가 하나의 Application으로 동작할 때,

이를 테스트하려면 각 컨테이너를 하나씩 생성해야 합니다.

여러 개의 컨테이너로 구성된 Application을 구축하기 위해서 run 명령어를 여러 번 사용할 수 있지만,

테스트 단계에서는 매번 run 명령어에 옵션을 설정해서 진행하기에 번거로움이 있습니다.

이를 위해 Docker ComposeYAML파일을 통해 여러 개의 컨테이너의 실행을 한번에 관리하여,

하나의 프로젝트처럼 다룰 수 있는 환경을 제공합니다.

예시

웹 어플리케이션을 서비스 한다고 했을 때 서비스가 실행되기 위해서는 웹서버(Apache, Nginx)와

Database(Oracle,MariaDB,MySQL)컨테이너를 생성해야 합니다.

Docker로 해당 서비스를 수행한다고 하면 아래와 같이 매번 docker run 옵션을 설정해 CLI컨테이너를 생성해야 합니다.

Docker 를 통한 웹 서비스 컨테이너 생성 방법

# Mysql 컨테이너 생성
$ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest

#Apache 컨테이너 생성
$ docker run -d --name apache -p 8080:80 httpd

Docker Compse는 이런 번거로움을 해결하기 위해 여러 컨테이너를 하나의 서비스로 묶어 다룰 수 있는 작업환경을 제공합니다.

Docker-Compose(docker-compose.yml)를 이용한 웹 서비스 컨테이너 생성

위 그림 처럼 Docker Compose는 docker-compose.yml에 서비스할 컨테이너를 정의하고 묶음으로 관리할 수 있습니다.

  • docker-compose.yml
    • version: YAML 파일 포맷 버전
    • service: 생성될 컨테이너들의 묶음
    • apache, mysql: 생성할 서비스 이름
version: "3.8"
services:
   apache:
    build: './apache/'
    depends_on:
      - mysql
    networks:
      - frontend
      - backend
    ports:
      - "8080:80"
    volumes:
      - ./public_html/:/var/www/html/
  mysql:
    image: mysql:5.6.40
    networks:
      - backend
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
networks:
  frontend:
  backend:
Comments