Docker Compose ์๊ฐ
Docker Compose์ ๋ํ ํฌ๊ด์ ์ธ ์๊ฐ๋ฅผ ํตํด ๋ค์ค ์ปจํ ์ด๋ Docker ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๊ฐ๋ฐ ์ํฌํ๋ก๋ฅผ ์ต์ ํํ์ธ์.

๊ธฐ์ ์ฐ์ ์ด ๋น ๋ฅธ ์๋๋ก ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ฏผ์ฒฉํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ํจ์จ์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ๋ํ ์์๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. Docker ์ปจํ ์ด๋ํ๋ฅผ ๋์ ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ผ๊ด๋๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋, ๋ฐฐ์ก ๋ฐ ์คํํ ์ ์๋๋ก ํจ์ผ๋ก์จ ์ด๋ฏธ ์ ๊ณ์ ์ง์ธ ์ ์๋ ํ์ ์ ๋จ๊ฒผ์ต๋๋ค. Docker ์ํ๊ณ์ ๊ฐ๋ ฅํ ๊ตฌ์ฑ ์์์ธ Docker Compose ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌ๋ฅผ ๋์ฑ ์ต์ ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ Docker Compose ์ ๋ํ ์ฌ์ธต์ ์ธ ์ดํด, ์ต์ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ์ ๊ด๋ จ์ฑ, ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ด์ ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. Docker Compose ์์ฝ์์คํ ์ ์ ์ํ๋ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๊ตฌ์ฑ ์์๋ฅผ ์ดํด๋ณด๊ณ ํ๋ก์ ํธ์์ ์ ์ฌ๋ ฅ์ ํ์ฉํ๊ณ ์ง์์ ์ผ๋ก ํ์ฅ๋๋ Docker ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌํ ์ ์๋ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ด Docker Compose ํ์์์๋ ๋ค์์ ๋ค๋ฃน๋๋ค.
- ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ : ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ํ ๊ฐ๋ตํ ๊ฐ์์ ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ธ ๊ด๋ฆฌ ํ์์ฑ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
- Docker Compose : ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๋งฅ๋ฝ์์ Docker Compose, ํต์ฌ ๊ธฐ๋ฅ ๋ฐ ์ด์ ์ ์๊ฐํฉ๋๋ค.
- Compose ํ์ผ ๋ฐ ์๋น์ค : Compose ํ์ผ์ ๊ตฌ์กฐ, ์๋น์ค์ ์ญํ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์์ ์ ์์ ์ค์์ฑ์ ๋ํด ์์ธํ ์์๋ด ๋๋ค.
- ๋คํธ์ํน ๋ฐ ๋ณผ๋ฅจ : Docker Compose ๋ด์์ ์ฌ์ฉํ ์ ์๋ ๋คํธ์ํน ๋ฐ ์คํ ๋ฆฌ์ง ์ต์ ๊ณผ ์ด๋ฌํ ์ต์ ์ด ์ปจํ ์ด๋์ ๋ฐ์ดํฐ ์ง์์ฑ ๊ฐ์ ์ํํ ํต์ ์ ์ด์งํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ ๋ก ์ ๋๋ค.
- ํ์ฅ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ : Docker Compose ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅ ๋ฐ ํจ์จ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์ฆ๊ฐํ๋ ์์๋ฅผ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์กฐ์ฌํฉ๋๋ค.
- ์ํฌํ๋ก ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก : Docker Compose ์ฌ์ฉํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ํฌํ๋ก์ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๊ถ์ฅ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ด ๋๋ค.
Docker Compose ์ ์ธ๊ณ๋ฅผ ํ๊ตฌํ๋ ๋ฐ ์ฐธ์ฌํ๊ณ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๊ธฐ์ ์ ํฅ์ํ์ฌ ๋ณด๋ค ๋ฅ๋ฅ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ํ ๋จ๊ณ๋ฅผ ์ค์ ํ ์ค๋น๋ฅผ ํ์ญ์์ค.
๊ฐ์ Docker Compose
Docker Compose ๋ค์ค ์ปจํ ์ด๋ Docker ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์, ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ์คํ ์์ค ๋๊ตฌ์ ๋๋ค. ๋จ์ผ YAML ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์๋น์ค๋ฅผ ์ ์ธํ๊ณ ์ฐ๊ฒฐํ๋ ๋ณต์กํ์ง ์์ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ์ผ๋ก์จ Docker Compose ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๊ฐ์ ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ ์ธํ๋ผ์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ์ฝ๋ ์์ฑ์ ์ง์คํ ์ ์์ต๋๋ค.

ํ์ฅ๋ ์ฃผ์ ๊ธฐ๋ฅ
- Compose File : Docker Compose ์ผ๋ฐ์ ์ผ๋ก docker-compose.yml ์ด๋ผ๋ YAML ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค, ๋คํธ์ํฌ ๋ฐ ๋ณผ๋ฅจ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด ํ์ผ์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ํฌ๊ด์ ์ธ ์ฒญ์ฌ์ง ์ญํ ์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ ๊ด๋ฆฌ, ์ฌ์์ฐ ๋ฐ ๊ณต์ ๋ฅผ ๋จ์ํํฉ๋๋ค.
- ์๋น์ค : Docker Compose ์์ ์๋น์ค๋ ํน์ Docker ์ด๋ฏธ์ง์์ ์์ฑ๋ ๊ฐ๋ณ ์ปจํ ์ด๋ ์ธ์คํด์ค๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ฌํ ์๋น์ค๋ ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฐ์ด๋ฉฐ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ฉด์ ๋คํธ์ํฌ๋ฅผ ํตํด ์ํธ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
- ๋คํธ์ํน : Docker Compose ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ง์ถคํ ๋คํธ์ํฌ ์์ฑ์ ์ฉ์ดํ๊ฒ ํ์ฌ ์๋น์ค ๊ฐ์ ์ํํ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. Compose๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์๋น์ค์ ๋ํ ๋จ์ผ ๋คํธ์ํฌ๋ฅผ ์๋์ผ๋ก ์์ฑํ์ง๋ง ์ถ๊ฐ ๋คํธ์ํฌ๋ฅผ ์ ์ํ์ฌ ํน์ ์๋น์ค๋ฅผ ๊ฒฉ๋ฆฌํ๊ฑฐ๋ ๋ณต์กํ ํ ํด๋ก์ง๋ฅผ ์ค์ ํ ์๋ ์์ต๋๋ค.
- ๋ณผ๋ฅจ : Docker ComposeDocker ์ปจํ ์ด๋์์ ์์ฑ๋๊ณ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๋ณผ๋ฅจ์ ์ ๊ณตํฉ๋๋ค. ๋ณผ๋ฅจ์ ์ปจํ ์ด๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ ์ปจํ ์ด๋๊ฐ ์ ๊ฑฐ๋๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ ๋ ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋๋๋ก ํฉ๋๋ค.
- ํ์ฅ : Docker Compose ์ฌ์ฉํ๋ฉด ํน์ ์๋น์ค์ ๋ํ ์ปจํ ์ด๋ ์ธ์คํด์ค ์๋ฅผ ์กฐ์ ํ์ฌ ์ฆ๊ฐ๋ ์ํฌ๋ก๋๋ฅผ ๊ด๋ฆฌํ๋๋ก ์๋น์ค๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค. ์ด๋ scale ์์ฑ ๋๋ --scale ๋ช ๋ น์ค ์ต์ ์ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค.
- ํ๊ฒฝ ๋ณ์ ๋์ฒด : Docker Compose ํ๊ฒฝ ๋ณ์ ๋์ฒด๋ฅผ ์ง์ํ๋ฏ๋ก Compose ํ์ผ์ ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ๋ค์ํ ํ๊ฒฝ ๋๋ ๋จ๊ณ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ค์ํ ๋ฐฐํฌ ์๋๋ฆฌ์ค์์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฉ์ ์ ์๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก
Docker Compose ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์๋๋ฆฌ์ค์ ์ด์์ ์ ๋๋ค.
- ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ : ๊ฐ๋ฐ์๋ Docker Compose ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์ปดํจํฐ์ ํ๋ก๋์ ํ๊ฒฝ์ ๋ณต์ ๋ณธ์ ์์ฑํ์ฌ ๋ค์ํ ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ๋จ๊ณ์์ ์ผ๊ด๋ ๋์์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- ์ง์์ ์ธ ํตํฉ ๋ฐ ์ง์์ ์ธ ๋ฐฐํฌ( CI/CD ): Docker ComposeCI/CD ํ์ดํ๋ผ์ธ์ ํตํฉ๋์ด ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ : Docker Compose ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์ค์ผ์คํธ๋ ์ด์ ํ์ฌ ์๋ก ๋ค๋ฅธ ์๋น์ค ๊ฐ์ ํจ์จ์ ์ธ ํต์ ๋ฐ ํ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Docker Compose ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ผ์คํธ๋ ์ด์ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๋จ์ผ YAML ํ์ผ์ ํตํด ์๋น์ค๋ฅผ ์ ์, ๊ตฌ์ฑ ๋ฐ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํฅ์์ํค๊ณ ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ธ ํ์ฅ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค.
YAML ๊ตฌ์ฑ ์ค๋ช
" YAML Ai't Markup Language"์ ์ค์๋ง์ธ YAML ๋จ์์ฑ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ ์ํด ์ค๊ณ๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋ฐ์ดํฐ ์ง๋ ฌํ ํ์์ ๋๋ค. ๊ตฌ์ฑ ํ์ผ, ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅธ ์ธ์ด ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ, XML ๋๋ JSON ๊ณผ ๊ฐ์ ํ์์ ๋ํ ๋ณด๋ค ์ก์ธ์ค ๊ฐ๋ฅํ ๋์์ผ๋ก ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ๊ณ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. YAML ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ต์ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ผ๋ก ๋ง๋ค๊ณ ๋ฐ์ดํฐ ์์ ๊ฐ์ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ๋ ์ ์ดํดํ ์ ์๋๋ก ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ์์ ๊ฐ๋ฐ์๋ ๊ตฌ์กฐํ๋ YAML ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ , API ํค ๋ฐ ์บ์ฑ ๊ธฐ๋ณธ ์ค์ ์ ์ ์ํ ์ ์์ต๋๋ค. ์ต์ปค, ๋ณ์นญ ๋ฐ ์ฌ์ฉ์ ์ง์ ํ๊ทธ์ ๊ฐ์ YAML์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ์ค๋ณต์ฑ์ ์ค์ด๊ณ ํ๋ก์ ํธ์ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์ํ ์ ์์ต๋๋ค. YAML ์ ๊ด๋ฒ์ํ ์ฑํ์ ๋ณต์กํ ๊ตฌ์ฑ์ ๋จ์ํํ๊ณ ํ ๊ตฌ์ฑ์๊ณผ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ฅ๋ฅ ํํ๋ ๋ฐ ์์ด ๊ทธ ํจ์จ์ฑ์ ์ ์ฆํฉ๋๋ค.
Docker Compose - ์ค์น
Docker Compose ๋ค์ค ์ปจํ ์ด๋ Docker ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌ ๋ฐ ์ค์ผ์คํธ๋ ์ด์ ์ ์ฉ์ดํ๊ฒ ํ๋ฏ๋ก ์ํํธ์จ์ด ๊ฐ๋ฐ ์์ญ์์ ๋งค์ฐ ์ค์ํ ๋๊ตฌ์ ๋๋ค. Docker Compose ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ๋จ์ผ YAML ํ์ผ ๋ด์์ ์๋น์ค, ๋คํธ์ํฌ ๋ฐ ๋ณผ๋ฅจ์ ํฌํจํ๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํธ๋ฆฌํ๊ฒ ์ ์ํ๊ณ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ํ๋ ์ ๊ทผ ๋ฐฉ์์ ํตํด ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ํ๋ก๋์ ๋จ๊ณ ์ ์ฒด์์ ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๊ด๋๊ณ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
Docker Compose ์ค์นํ๋ ค๋ฉด ๋จผ์ Docker ๊ฐ ์์คํ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋๊ณ ์๋ํ๋์ง ํ์ธํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ Docker Compose ์ค์น ํ๋ก์ธ์ค๋ ์ด์ ์ฒด์ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด Linux์์๋ curl ๋ช ๋ น์ ์ฌ์ฉํ์ฌ GitHub ์์ ์ต์ Compose ๋ฆด๋ฆฌ์ค๋ฅผ ์ป๊ณ , ์คํ ๊ถํ์ ์ ์ฒญํ๊ณ , ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์คํ ์ PATH ๋ด ์์น๋ก ์ ์กํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก Docker Compose macOS ๋ฐ Windows์ฉ Docker Desktop ๊ณผ ํจ๊ป ์ฌ์ ํจํค์ง๋์ด ์ค์น ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๋จ์ํํฉ๋๋ค.
Docker Compose์ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ์ค์ ์ฌ๋ก๋ ํ๋ฐํธ์๋ ์๋น์ค, ๋ฐฑ์๋ API ์๋น์ค ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๊ฐ ํ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค. Docker Compose ์ฑ๊ณต์ ์ผ๋ก ์ค์นํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ง๊ด์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ YAML ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ณ ๊ถ๊ทน์ ์ผ๋ก ๊ฐ๋ฐ ์ํฌํ๋ก๋ฅผ ๊ฐ์ ํ๊ณ ์ํํธ์จ์ด ์ ๊ณต์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ Docker-Compose ํ์ผ ๋ง๋ค๊ธฐ
์ฒซ ๋ฒ์งธ Docker-Compose ํ์ผ์ ์์ฑํ๋ ๊ฒ์ ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌ๋ฅผ ํฉ๋ฆฌํํ๊ณ ๋จ์ํํ๋ ๋ฐ ํ์์ ์ธ ๋จ๊ณ์ ๋๋ค. Docker-Compose๋ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋จ์ผ ๋จ์๋ก ์ ์, ๊ตฌ์ฑ ๋ฐ ์คํํ์ฌ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ์ ๊ฐ์ ํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ์์ํ๋ ค๋ฉด ๋ก์ปฌ ๋จธ์ ์ Docker ๋ฐ Docker-Compose๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ์ค์น๊ฐ ์๋ฃ๋๋ฉด ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ " docker-compose.yml "์ด๋ผ๋ ํ์ผ์ ๋ง๋ญ๋๋ค. ์ด ํ์ผ์์ YAML ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์๋น์ค, ๋คํธ์ํฌ ๋ฐ ๋ณผ๋ฅจ์ ์ ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด React๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ํ๋ฐํธ์๋, Node.js๋ก ๊ฐ๋ฐ๋ ๋ฐฑ์๋ API ๋ฐ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. docker-compose.yml ํ์ผ์์ ๊ฐ ๊ตฌ์ฑ ์์์ ๋ํด ํ๋์ฉ ์ธ ๊ฐ์ง ์๋น์ค๋ฅผ ์ ์ํฉ๋๋ค. ๊ฐ ์๋น์ค์ ๋ํ Docker ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ๋ ๊ฒ ์ธ์๋ ํ๊ฒฝ ๋ณ์, ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋ฐ ๋ณผ๋ฅจ์ ํตํ ์๊ตฌ ์คํ ๋ฆฌ์ง๋ฅผ ์ ์ํ ์๋ ์์ต๋๋ค. Docker-Compose ํ์ผ์ด ์ค๋น๋๋ฉด ํฐ๋ฏธ๋์์ " docker-compose up "์ ์คํํ์ฌ ๋ชจ๋ ์๋น์ค๋ฅผ ๋น๋ํ๊ณ ์์ํ ์ ์์ผ๋ฏ๋ก ๋ค์ํ ํ๊ฒฝ์์ ์ผ๊ด๋๊ฒ ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๋ค์์ React ํ๋ฐํธ์๋, Node.js ๋ฐฑ์๋ ๋ฐ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ ๊ฐ๋จํ docker-compose.yml ํ์ผ์ ์์ ๋๋ค.

์ด ์์์ ์๋น์ค ์น์ ์ ํ๋ฐํธ์๋, ๋ฐฑ์๋ ๋ฐ db์ ์ธ ๊ฐ์ง ์๋น์ค๋ฅผ ์ ์ํฉ๋๋ค. ๊ฐ ์๋น์ค์๋ ๋น๋ ์ปจํ ์คํธ, ์ด๋ฏธ์ง, ํฌํธ, ์ข ์์ฑ, ํ๊ฒฝ ๋ณ์ ๋ฐ ๋คํธ์ํฌ์ ๊ฐ์ ๊ณ ์ ํ ๊ตฌ์ฑ์ด ์์ต๋๋ค.
frontend ์๋น์ค๋ ๋น๋ ์ปจํ ์คํธ ./frontend to build_backend_ ์๋น์ค์ ์ข ์๋ฉ๋๋ค. backend ์๋น์ค๋ ๋น๋ ์ปจํ ์คํธ ./backend ์ฌ์ฉํ์ฌ Node.js ์ฑ์ ๋น๋ํ๋ฉฐ db ์๋น์ค์ ์์กดํฉ๋๋ค. DATABASE_URL ๊ณผ ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ ๊ตฌ์ฑ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ฐฑ์๋๋ก ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
db ์๋น์ค๋ Docker Hub์ ๊ณต์ MongoDB ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ๋ฐ์ดํฐ ์ง์์ฑ์ ์ํด myapp-data ๋ผ๋ ๋ณผ๋ฅจ์ ์ง์ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ๋จ์ networks ๋ฐ volumes ์น์ ์ ๋ธ๋ฆฌ์ง ๋๋ผ์ด๋ฒ์ myapp-data ๋ผ๋ ๋ช ๋ช ๋ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ myapp-network ๋ผ๋ ์ฌ์ฉ์ ์ง์ ๋คํธ์ํฌ๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ฌํ ์์๋ ์๋น์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.


