본 포스트는 인프런: 초보를 위한 도커 안내서 강의를 수강하며 정리한 내용입니다.
Docker Compose
Docker Compose란
- 지금까지는 도커에서 개별의 명령어를 쳐서 이미지를 다운로드하고 컨테이너를 띄우는 과정을 거쳤음
- 도커 명령어를 통한 작업은 실수가 발생할 수 있는데, 도커 컴포즈는 이 문제를 해결할 수 있는 간결한 방법을 제시함
- 도커 컴포즈는 띄우려고 하는 복수의 컨테이너에 대한 사항을 Yaml(야믈)파일에 정리하여, 한번에 실행시키는 방식으로 동작함.
Docker Compose 설치
도커 컴포즈는 기본적으로 docker for mac을 설치할 때 함께 설치됨 (리눅스의 경우 그러하지 않기 때문에 따로 설치가 필요함)
리눅스의 설치
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
- 설치 버전 확인하기
$ docker-compose version
docker-compose version 1.28.5, build c4eb3a1f
docker-py version: 4.4.4
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1h 22 Sep 2020
Yaml(.yml) 개념
XML, JSON과 같이 시스템 사이에 데이터를 주고 받을 때 사용하는 포맷
- XML 의 구조:
- key-value :
<key>value</key>
- array :
- key-value :
<parent>
<child1></child1>
<child2></child2>
<child3></child3>
</parent>
- JSON 의 구조
- key-value :
{key: value}
- array
- key-value :
{key:
[array1],
[array2],
[array3],
}
- Yaml의 구조
- key-value :
key: value
- array : 하이픈을 통해 array임을 구별
- key-value :
key :
- array1
- array2
docker-compose.yml 예제
- 워드프레스 블로그를 도커로 띄우기
- 요구사항
- MySQL 컨테이너 띄우기
- 블로그 데이터베이스가 저장될 볼륨 마운트 하기
- 워드프레스를 위한 데이터베이스 생성하기
- Wordpress 컨테이너 띄우기
- 볼륨 마운트 하기
- MySQL 컨테이너에 연결하여 데이터베이스 사용하기
- MySQL 컨테이너 띄우기
- 요구사항
# docker-compose.yml
version: '2'
services:
db:
image: mysql/mysql-server:8.0.15
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
volumes:
- ./wp:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_USER: wordpress
실행
$ docker-compose up