Search

8. Docker Compose

1. Docker Compose๋ž€?

โ€ข
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์ฒ˜๋Ÿผ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ
โ€ข
๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ์„œ๋ฒ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ ์„œ๋ฒ„ ๋“ฑ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ด๋•Œ Compose๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด YAML ํŒŒ์ผ(docker-compose.yml)์— ์ •์˜๋งŒ ํ•ด๋‘๊ณ ,docker compose up ํ•œ ๋ฒˆ์œผ๋กœ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‰ฝ๊ฒŒ ๋งํ•ด, ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ orchestration(์กฐ์œจ)ํ•˜๋Š” ๋„๊ตฌ์˜ˆ์š”.

2. Docker Compose์˜ ์žฅ์ 

1.
์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ์ผ๊ด„ ์‹คํ–‰ (์˜ˆ: Nginx + Spring + MySQL)
2.
ํ™˜๊ฒฝ ์„ค์ •(YAML) ํŒŒ์ผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
3.
์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์ž๋™ ์ƒ์„ฑ โ†’ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ
4.
docker compose up -d / docker compose down ์œผ๋กœ ๊ฐ„๋‹จํžˆ ์‹œ์ž‘ยท์ข…๋ฃŒ

3. ๊ธฐ๋ณธ ๊ตฌ์กฐ (docker-compose.yml)

version: "3.9" services: web: image: <์ด๋ฏธ์ง€๋ช…> ports: - "8080:80" networks: - mynetwork db: image: <์ด๋ฏธ์ง€๋ช…> environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mydb volumes: - db_data:/var/lib/mysql # ๋งˆ์šดํŠธ networks: - mynetwork volumes: db_data: networks: mynetwork:
YAML
๋ณต์‚ฌ

4. ์ฃผ์š” ๋ช…๋ น์–ด

์„œ๋น„์Šค ์‹คํ–‰

docker compose up -d
Bash
๋ณต์‚ฌ

์„œ๋น„์Šค ์ค‘์ง€ & ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

docker compose down
Bash
๋ณต์‚ฌ

๋กœ๊ทธ ํ™•์ธ

docker compose logs -f
Bash
๋ณต์‚ฌ

ํŠน์ • ์„œ๋น„์Šค๋งŒ ์‹คํ–‰

docker compose up -d <์„œ๋น„์Šค๋ช…>
Bash
๋ณต์‚ฌ

5. ์‹ค์Šต ์˜ˆ์‹œ (Nginx + MySQL)

1.
docker-compose.yml ์ž‘์„ฑ
2.
์‹คํ–‰
docker compose up -d
Bash
๋ณต์‚ฌ
3.
ํ™•์ธ
docker ps docker network ls # compose ์ „์šฉ ๋„คํŠธ์›Œํฌ ์ž๋™ ์ƒ์„ฑ๋จ
Bash
๋ณต์‚ฌ
4.
์ข…๋ฃŒ
docker compose down
Bash
๋ณต์‚ฌ

ํ•ต์‹ฌ ์š”์•ฝ

โ€ข
Docker Compose = ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ YAML ํŒŒ์ผ๋กœ ์ •์˜ํ•˜๊ณ  ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ
โ€ข
์„œ๋น„์Šค ๊ฐ„ ๋„คํŠธ์›Œํฌ ์ž๋™ ๊ตฌ์„ฑ + ๋ณผ๋ฅจ ๊ด€๋ฆฌ
โ€ข
docker compose up / docker compose down ์œผ๋กœ ์‰ฝ๊ฒŒ ์‹คํ–‰/์ค‘์ง€