2019. 08. 24
Jaewoo KIM
๋์ปค ์ปดํฌ์ฆ๋
์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ์๋ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๋ค.
๋์ปค ์ปดํฌ์ฆ๋
์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ์ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๋ค
๋์ปค ์ปดํฌ์ฆ๋
์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ํ๋์ ํ๋ก์ ํธ๋ก์ ๋ค๋ฃฐ ์ ์๋ ์์ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
๋์ปค ์ปดํฌ์ฆ๋
์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ํ๋์ ํ๋ก์ ํธ๋ก์ ๋ค๋ฃฐ ์ ์๋ ์์ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
docker-compose.yml
ํ๋ก์ ํธ
์๋น์ค
์ปจํ ์ด๋
ubuntu
mysql
web
YAML ํ์ผ ๊ตฌ์ฑ์์
YAML ํ์ผ์ ํฌ๊ฒ 4๊ฐ์ง ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
version: '2'
services:
...
volumes:
...
network:
...
ํ์ผ ํฌ๋ฉง์ ๋ช ์ํ ์ ์๋ค.ย
YAML ํ์ผ ๊ตฌ์ฑ์์
์๋น์ค์ ์ด๋ฆ์ service์ ํ์ ํญ๋ชฉ์ผ๋ก ์ ์ํ๋ค
services:
my_container_1:
image: ...
my_container_2:
image: ...
YAML ํ์ผ ๊ตฌ์ฑ์์
์๋น์ค ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋ ์ฐ์ผ ์ด๋ฏธ์ง์ ์ด๋ฆ์ ์ค์ ํ๋ค.
services:
my_container_1:
image: wooddy/composetest:mysql
YAML ํ์ผ ๊ตฌ์ฑ์์
์๋น์ค ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ ํ๊ฒฝ๋ณ์๋ฅผ ์ง์ ํ๋ค.
services:
web:
enviroment:
- MYSQL_PORT_PASSWORD=mypassword
- MYSQL_DATABASE_NAME=mydb
enviroment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_DATABASE_NAME: mydb
YAML ํ์ผ ๊ตฌ์ฑ์์
๋ค๋ฅธ ์๋น์ค์ ์๋น์ค๋ช ๋ง์ผ๋ก ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํ๋ค
services:
web:
links:
- db
- db:database
- redis
YAML ํ์ผ ๊ตฌ์ฑ์์
์๋น์ค ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ ํ๊ฒฝ๋ณ์๋ฅผ ์ง์ ํ๋ค.
services:
web:
image: wooddy/composetest:web
command: apachectl -DFOREGROUND
web:
image: wooddy/composetest:web
command: [apchectl, -DFOREGROUND]
YAML ํ์ผ ๊ตฌ์ฑ์์
ํน์ ์ปจํ ์ด๋์ ๋ํ ์์กด ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
services:
web:
image: wooddy/composetest:web
depends_on
- mysql
mysql:
image: wooddy/composetest:mysql
YAML ํ์ผ ๊ตฌ์ฑ์์
์๋น์ค์ ์ปจํ ์ด๋๋ฅผ ๊ฐ๋ฐฉํ ํฌํธ๋ฅผ ์ค์ ํ๋ค.
services:
web:
image: wooddy/composetest:web
ports:
- "8000"
- "8081-8005"
- "80:80"
YAML ํ์ผ ๊ตฌ์ฑ์์
๋์ปคํ์ผ์์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด ์๋น์ค์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋๋ก ํ๋ค.
services:
web:
bulid: ./composetest
image: wooddy/composetest:web
YAML ํ์ผ ๊ตฌ์ฑ์์
๋ค๋ฅธ YAMLํ์ผ์ด๋ ํ์ฌ YAML ํ์ผ์์ ์๋น์ค ์์ฑ์ ์์๋ฐ๊ฒ ์ค์ ํ๋ค.
YAML ํ์ผ ๊ตฌ์ฑ์์
-- docker-compose.yml
version: '3.0'
service:
web:
extends:
file: extend_compose.yml
service: extend_web
-- extend_compose.yml
version: '3.0'
service:
extend_web:
image: ubuntu:14.04
ports:
- "80:80"
๋ค๋ฅธ YAMLํ์ผ์ด๋ ํ์ฌ YAML ํ์ผ์์ ์๋น์ค ์์ฑ์ ์์๋ฐ๊ฒ ์ค์ ํ๋ค.
YAML ํ์ผ ๊ตฌ์ฑ์์
version: '3.0'
service:
web:
extends:
file: extend_compose.yml
service: extend_web
extend_web:
image: ubuntu:14.04
ports:
- "80:80"
YAML ํ์ผ ๊ตฌ์ฑ์์
๋ณผ๋ฅจ์ ์์ฑํ ๋ ์ฌ์ฉ๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์ ํ๋ค
YAML ํ์ผ ๊ตฌ์ฑ์์
version: '3.0'
services:
...
volumes:
driver: overlay2
driver_opts:
opt: "1"
opt2: 2
์๋น์ค ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ์ฉํ ํ๊ฒฝ๋ณ์๋ฅผ ์ง์ ํ๋ค.
YAML ํ์ผ ๊ตฌ์ฑ์์
version: '3.0'
services:
image: wooddy/composetest:web
volume:
- myvolume:/var/www/html
volumes:
myvolume:
external: true
YAML ํ์ผ์ ์์ฑํ ๋ ์คํ ๊ฒ์ฌ๋ ํ์ผ ํฌ๋งท์ด ์ ์ ํ์ง ๊ฒ์ฌํ ์ ์๋ค.
YAML ํ์ผ ๊ตฌ์ฑ์์
โ docker-compose config
services:
db:
container_name: mysql-5.7
environment:
...
image: mysql:5.7
ports:
- published: 3306
target: 3306
restart: always
volumes:
- db-data:/var/lib/mysql:rw
- /Users/jwoos/projects/springboot-bbs/init:/docker-entrypoint-initdb.d:rw
version: '3.3'
volumes:
db-data: {}
YAML ํ์ผ ๊ตฌ์ฑ์์
version: '3'
services:
db:
image: mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD="secret"
web:
image: apache
build: ./webapp
depends_on:
- db
restart: always
ports:
- "8080:80"
์ ๋ถ๋ฅผ ์ค๋ช ํ๊ธฐ์ ๋๋ฌด ๋ง๋ค..
๋์ปค ์ปดํฌ์ฆ CLI
YAML ํ์ผ์ ๋ด์ฉ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์๋น์ค๋ฅผ ์คํํ๋ค.
๋์ปค ์ปดํฌ์ฆ CLI
YAML ํ์ผ์ ์คํํ ๋ ์ฌ์ฉํ๋ค.
๋์ปค ์ปดํฌ์ฆ CLI
Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]
Options:
-d, --detach ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ปจํ
์ด๋๊ฐ ์์๋๊ณ ์คํ ์ํ๊ฐ ๋๋ค.
--no-deps ์ฐ๊ฒฐ๋ ์๋น์ค๋ฅผ ์์ํ์ง ์๋๋ค.
--force-recreate ์ปจํ
์ด๋๊ฐ ์กด์ฌํด๋ ๋ค์ ์์ฑํ๋๋ก ํ๋ค.
--always-recreate-deps ์ข
์์ ์ธ ์ปจํ
์ด๋๋ค์ ํญ์ ๋ค์ ์์ฑํ๋ค
--no-start ์๋น์ค๋ฅผ ์๋์ผ๋ก ์์ํ์ง ์์
--build ์ปจํ
์ด๋๋ฅผ ์คํํ๊ธฐ ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ค
--scale SERVICE=NUM ์๋น์ค๋ฅผ NUM ๊ฐ์ ์ธ์คํด์ค๋ก ์ค์ ํ๋ค. (scale ์ต์
์ด ์๋ ๊ฒฝ์ฐ)
์ปจํ ์ด๋๋ฅผ ์ค์งํ๊ณ ์ปจํ ์ด๋, ๋คํธ์ํฌ, ๋ณผ๋ฅจ ๋ฐ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐํ๋ค
๋์ปค ์ปดํฌ์ฆ CLI
Usage: down [options]
Options:
--rmi type Remove images. Type must be one of:
'all': ์๋น์ค์์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐํ๋ค
'local': ์ปค์คํ
ํ๊ทธ๊ฐ ์กด์ฌํ์ง ์๋ ์ด๋ฏธ์ง ์ ๊ฑฐ
docker run --name mysql \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=test \
-e MYSQL_ROOT_PASSWORD=test \
-p 3306:3306 \
-v /home/data/mysql:/var/lib/mysql
mysql:5.7