Index
- Docker
- Container Orchestration
- Provisioning
Docker Compose
Docker Compose는 다중 Container Application을 정의하고 실행하기 위한 도구입니다.
YAML파일을 사용하여 Application 서비스를 구성합니다.
예를 들어 Application 을 구동하기 위해 DB 설치를 하고, Application 구동 해야 한다면
DB 용 Container를 구성하고 Application용 Container를 구성해야 합니다. 이러한 구성을 Compose를 이용한다면
YAML로 작성된 설정파일 1개로 구성이 가능합니다.
Compose는 3단계 프로세스가 작동합니다.
- Dockerfile로 환경을 정의함
- docker-compose.yml에서 앱을 구성하는 서비스를 정의하여 격리된 환경에서 함께 실행 될 수 있도록 함.
- docker-compose up을 실행하면 Compose가 전체 앱을 시작하고 실행
관련 문서는 여기를 참고해주세요
1.Docker Compose 설치
간단하게 아래 명령어로 설치가 가능합니다.
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
2.Docker Compose로 Container구동하기
1 | 이번에 진행할 Sample 역시 broker-api 입니다. |
2-1. yaml 파일을 작성
- version : docker compose 버전을 작성, 버전에 따라 지원하는 옵션이 달라집니다(관련 내용은 공식문서 참고)
- services: container들을 정의합니다.
- image: docker image를 적습니다. local에 있는 image라면 local image를 사용하고 없는 image라면 docker hub의 공식 이미지를 다운받아집니다.
- restart: 서버 재시작시 container의 자동재시작 여부
- port: docker run 명령의 -p 옵션
- volumes: docker run 명령의 -v 옵션
- container_name: 실행하는 container 명칭
- environment: 환경변수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22version: "3.2"
services:
web:
image: 'broker-api2'
restart: always
ports:
- '18080:18080'
volumes:
- '/home/ces/logs:/home/thinkub0219/log'
container_name: "broker-api2"
mongodb:
image: 'mongo'
restart: always
environment:
MONGO_INITDB_DATABASE: vision
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: P@ssw0rd
volumes:
- './db:/home/thinkub0219/db'
container_name: "mongodb"
ports:
- "27017:27017"
2.2 docker compose 실행
docker compose를 실행하게되면 yaml파일에 정의된 내용이 실행이 됩니다.
container 까지 실행이 됩니다.docker-compose.yml 파일이 있는 경로에서 실행해야 합니다.
1 | sudo docker-compose up -d |
3. 작동확인
- broker-api
- mongodb
참고
https://www.docker.com
http://pyrasis.com/book/DockerForTheReallyImpatient
https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose
https://tech.osci.kr/docker/2018/09/10/45749387/
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html