Docker Compose๋?!
์ฌ๋ฌ ๊ฐ์ Docker ์ปจํ ์ด๋๋ค์ ํ๋์ ์๋น์ค๋ก ์ ์๋ผ๊ณ ๊ตฌ์ฑํด ํ๋์ ๋ฌถ์์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ ํด์ด๋ค!
Docker Compose๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฉ์ดํ๋ค.
์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ก ์ด๋ฃจ์ด์ง ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋ฒ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค. ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ํ๋์ ํ๊ฒฝ์์ ์คํํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ค.
๋ณต์กํ ๋ช ๋ น์ด๋ก ์คํ์ํค๋ ๊ฑธ ๊ฐ์ํ ์ํฌ ์ ์๋ค.
Docker Compose๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ
์ด๋๋ฅผ ์คํ์ํฌ ๋๋ง๋ค ๋ณต์กํ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ง ์์๋ ๋๋ค.
๋จ์ํ docker compose up ๋ช
๋ น์ด๋ง ์คํ์ํค๋ฉด ๋๋ค.
Docker Compose ์ ์ฒด ํ๋ฆ ๋๊ปด๋ณด๊ธฐ
1. compose.yml ํ์ผ ์์ฑํ๊ธฐ
services:
my-web-server:
container_name: webserver
image: nginx
ports:
- 80:80
๐ services : my-web-server : Docker Compose์์ ํ๋์ ์ปจํ
์ด๋๋ฅผ ์๋น์ค(Service)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด ์ต์
์ ์๋น์ค์ ์ด๋ฆ์ ๋ถ์ด๋ ๊ธฐ๋ฅ์ด๋ค.
๐ container_name: web-server : ์ปจํ
์ด๋๋ฅผ ๋์ธ ๋ ๋ถ์ด๋ ๋ณ์นญ์ด๋ค. CLI์์ --name web-server ์ญํ ๊ณผ ๋์ผํ๋ค.
๐ image: nginx : ์ปจํ
์ด๋๋ฅผ ์คํ์ํฌ ๋ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ง ์ ์ํ๋ ๋ช
๋ น์ด์ด๋ค. $ docker run [์ด๋ฏธ์ง๋ช
] ๊ณผ ๋์ผํ ์ญํ ์ด๋ค.
๐ ports : ํฌํธ ๋งคํ์ ์ด๋ป๊ฒ ํ ์ง๋ฅผ ์ค์ ํ๋ ์ต์
์ด๋ค. CLI์์ -p 80:80 ์ญํ ๊ณผ ๋์ผํ๋ค.
2. compose ํ์ผ ์คํ์ํค๊ธฐ
$ docker compose up -d
3. compose ์คํ ํํฉ ๋ณด๊ธฐ
$ docker compose ps
$ docker ps
4. compose๋ก ์คํ๋ ์ปจํ ์ด๋ ์ญ์
$ docker compose down
์์ฃผ ์ฌ์ฉํ๋ Docker Compose CLI ๋ช ๋ น์ด
์๋ ๋ช ๋ น์ด๋ค์ compose.yml ํ์ผ์ด ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ์์ ์คํ์์ผ์ผ ํ๋ค.
compose ํ์ผ ์์ฑ
services:
websever:
container_name: webserver
image: nginx
ports:
- 80:80
compose.yml์์ ์ ์ํ ์ปจํ ์ด๋ ์คํ
$ docker compose up # ํฌ๊ทธ๋ผ์ด๋์์ ์คํ
$ docker compose up -d # ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ
Docker Compose๋ก ์คํ์ํจ ์ปจํ ์ด๋ ํ์ธํ๊ธฐ
# compose.yml์ ์ ์๋ ์ปจํ
์ด๋ ์ค ์คํ ์ค์ธ ์ปจํ
์ด๋๋ง ๋ณด์ฌ์ค๋ค.
$ docker compose ps
# compose.yml์ ์ ์๋ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋ณด์ฌ์ค๋ค.
$ docker compose ps -a
Docker Compose ๋ก๊ทธ ํ์ธํ๊ธฐ
# compose.yml์ ์ ์๋ ๋ชจ๋ ์ปจํ
์ด๋์ ๋ก๊ทธ๋ฅผ ๋ชจ์์ ์ถ๋ ฅํ๋ค.
$ docker compose logs
์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ ์ ์ด๋ฏธ์ง ์ฌ๋น๋ํ๊ธฐ
$ docker compose up --build # ํฌ๊ทธ๋ผ์ด๋์์ ์คํ
$ docker compose up --build -d # ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ
์ฐธ๊ณ : docker compose up vs docker compose up --build
๐ docker compose up : ์ด๋ฏธ์ง๊ฐ ์์ ๋๋ง ๋น๋ํด์ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค. ์ด๋ฏธ์ง๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ง ์๊ณ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค.
๐ docker compose up --build : ์ด๋ฏธ์ง๊ฐ ์๊ฑด ์๊ฑด ๋ฌด์กฐ๊ฑด ๋น๋๋ฅผ ๋ค์ ํด์ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค.
์ด๋ฏธ์ง ๋ค์ด ๋ฐ๊ธฐ / ์ ๋ฐ์ดํธํ๊ธฐ
$ docker compose pull
๐ compose.yml์์ ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ๊ฑฐ๋ ์
๋ฐ์ดํธ ํ๋ค.
๋ก์ปฌ ํ๊ฒฝ์ ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ๋๋ค.
๋ก์ปฌ ํ๊ฒฝ์ ์ด๋ฏธ ์ด๋ฏธ์ง๊ฐ ์๋๋ฐ, Dockerhub์ ์ด๋ฏธ์ง์ ๋ค๋ฅธ ์ด๋ฏธ์ง์ผ ๊ฒฝ์ฐ ์ด๋ฏธ์ง๋ฅผ ์
๋ฐ์ดํธ ํ๋ค.
Docker Compose์์ ์ด์ฉํ ์ปจํ ์ด๋ ์ข ๋ฃํ๊ธฐ
$ docker compose down
Docker Compose๋ก Redis, MySQL, Spring Boot ์คํ์ํค๊ธฐ
Redis compose.yml
services:
my-cache-server:
image: redis
ports:
- 6379:6379
MySQL compose.yml
services:
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
๐ environment: ... : CLI์์ -e MYSQL_ROOT_PASSWORD=password ์ญํ ๊ณผ ๋์ผํ๋ค.
๐ volumes: ... : CLI์์ -v {ํธ์คํธ ๊ฒฝ๋ก}:/var/lib/mysql ์ญํ ๊ณผ ๋์ผํ๋ค.
Spring Boot compose.yml
services:
my-server:
build: .
ports:
- 8080:8080
๐ build . : compose.yml์ด ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ(.)์ ์๋ Dockerfile๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํด ์ปจํ ์ด๋๋ฅผ ๋์ฐ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
compose ํ์ผ ์คํ์ํค๊ธฐ
$ docker compose up -d --build
Docker CLI โ Docker Compose ์ฝ๊ฒ ์์ฑํ๊ธฐ
Docker CLI โ compose.yml๋ก ๋ณํ
Composerize
Say goodbye to sprawling docker commands and say hello to $ docker-compose up :) Looking for the reverse (Docker compose to docker run command(s)) ? Try Decomposerize Want to convert from Docker compose file formats ? Try Composeverter Paste your docker ru
www.composerize.com
compose.yml โ Docker CLI๋ก ๋ณํ
https://www.decomposerize.com/
Decomposerize
Convert your docker compose file to $ docker run command(s) :) Paste your docker compose file content into the box below! Looking for the reverse (docker run command(s) to Docker compose) ? Try Composerize Want to convert from Docker compose file formats ?
www.decomposerize.com