๐ Compose ๋?
Docker ์ปจํ ์ด๋์ ์ค๊ณ๋ ( YAML ํ์ผ )
( ๋ช ๋ น์ผ๋ก ์ปจํ ์ด๋ ๋ฌด์ ํ ์์ฑ ใ ใ )
๐ ์์ฑํ๊ธฐ
๋ง๋ค๊ณ ์ถ์ ์ปจํ ์ด๋ ( 2๊ฐ )
docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=secret \
-e MYSQL_DB=todos \
node:12-alpine \
sh -c "apk add --no-cache python2 g++ make && yarn install && yarn run dev"
docker run -d \
--network todo-app --network-alias mysql \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=todos \
mysql:5.7
Compose ์์ฑ
# ํ๋ก์ ํธํด๋/docker-compose.yml
# ์คํค๋ง ๋ฒ์ ์ง์
version: "3.9" # optional since v1.27.0
# ์คํํ๋ ค๋ ์๋น์ค ์ง์
services:
# app์ผ๋ก ๋ณ์นญ ์ง์ ( services์ ๋ฐ๋ก ์๋ ์์ )
app:
# ์ด๋ฏธ์ง ํ์ผ ์ง์
image: node:12-alpine
# ์ฌ์ฉํ ๋ช
๋ น์ด ์ง์
command: sh -c "apk add --no-cache python2 g++ make && yarn install && yarn run dev"
# ํฌํธ ์ง์
ports:
- 3000:3000
# ๋ช
๋ น์ด ์ฌ์ฉ ๊ฒฝ๋ก ์ง์
working_dir: /app
# ๋ณผ๋ฅจ ์ง์ / ๋ฐ์ธ๋ฉ
volumes:
- ./:/app
# ํ๊ฒฝ ๋ณ์ ์ง์
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
# mysql์ผ๋ก ๋ณ์นญ ์ง์
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
# ์๋น์ค ๋ณผ๋ฅจ ์ง์
volumes:
- todo-mysql-data:/var/lib/mysql
# ์๋ก์ด ๋ณผ๋ฅจ ์์ฑ
volumes:
todo-mysql-data:
๐ ์คํํ๊ธฐ
Compose ํ์ผ๋ก, ์ปจํ ์ด๋ ๋ง๋ค๊ธฐ
docker-compose up -d
# -d : ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ( docker run ์ต์
๊ณผ ๋์ผ )
Compose ์คํ๋ก๊ทธ ํ์ธํ๊ธฐ
docker-compose logs <์ต์
> <๋ณ์นญ>
# -f : ์ค์๊ฐ ์ถ๋ ฅ
๐ ์ข ๋ฃํ๊ธฐ
docker-compose down --volumes
# --volumes : ๋ณผ๋ฅจ๋ ๊ฐ์ด ์ ๊ฑฐ
๋ฐ์ํ