์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ๋ชจ์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํด์
๋๋ค. ์ค์ ๋ก ์น์๋น์ค๋ฅผ ๋ง๋ค ๋๋ ํ๋ก ํธ, ๋ฐฑ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ๋ฑ ๋ง์ ์๋ฒ๊ฐ ํ์ํ์ฃ . ์ด๋ค์ ๋ชจ๋ docker ์ปจ๋ฐ์ด๋๋ก ๋ง๋ค๊ณ ์๋ก๋ฅผ ์ฐ๊ฒฐํ์ฌ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ค์ ํ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ ์ํ Docker Compose
๊ฐ ํ์ํ ๊ฒ์
๋๋ค!
๋ฌผ๋ก ๋์ค์ ์๋น์ค์ ๊ท๋ชจ๊ฐ ๋๋์ฑ ์ปค์ง๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง ์ด๊ฑด ์ผ๋จ Docker๋ฅผ ๋ค๋ฃฌ ๋ค์์ ์๊ธฐํด๋ณด๋๋ก ํฉ์๋ค.
YAML ํ์ผ์ ์์ฑํ๊ณ , ํด๋น ํ์ผ์ ์ฌ๋ฌ๊ฐ์ง ์ค์ ์ ๋ด์๋๊ณ ์ฌ์ฉํฉ๋๋ค.
YAML ํ์ผ์ ์ ๋ธ๋ก๊ทธ์ ์งค๋ง ํฌ์คํ ์์ ํ๋ฒ ๋ค๋ค๋ ์ ์ด ์๋ ๋ด์ฉ์ด์ฃ ? ์ฝ๊ฒ ๋งํด, ๋ฐ์ดํฐ์ ์ ์๊ฐ ์ฉ์ดํ๊ณ , Dictionary๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ณด๋ฅผ ์ฝ๊ฒ ๋ฝ์ ์ธ ์ ์์ด config ํ์ผ๊ฐ์ ๊ฑฐ์ ์์ฃผ ์ฌ์ฉํ๋ค๊ณ ํ์ต๋๋ค.
YAML
๋ค์ฌ์ฐ๊ธฐ๋ก ket์ value ๊ตฌ๋ถ (๋ณดํต 2์นธ)
---
: ๋ฌธ์ ์์ฑ ์์
...
: ๋ฌธ์ ์์ฑ ์ข ๋ฃ
-
: ๋ฆฌ์คํธ์์ keyno1 : valueno1 : - valuelist : - no1 - no2 - valuelist2 : - no1 - no2
์์ ๊ฐ์ format์ผ๋ก ์์ฑ๋ docker compose ํ์ผ์ ์๋์ ๊ฐ์ ๊ตฌ์ฑ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค
Docker Compose ํ์ผ์ ๋ฒ์ ์ ๋๋ค. ๋ณดํต์ "3"์ผ๋ก ์ง์ ํฉ๋๋ค.
์ฌ์ฉ๋ ์ปจํ ์ด๋๋ค์ ์ค์ ํฉ๋๋ค. ์ปจํ ์ด๋์ ์ด๋ฆ๊ณผ ์ฌ์ฉํ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ๋ฑ์ ์ ์ํฉ๋๋ค.
๋ค์ํ ์ต์ ์ด ์์ผ๋ฉฐ, ์ต์ ์ ๋ํ ์ค๋ช ์ ์๋์ ์์์ ๊ฐ์ด ์ ์ด๋๊ฒ ์ต๋๋ค!
์์
services:
A: ## A๋ผ๋ ์ด๋ฆ์ผ๋ก ์ปจํ
์ด๋๋ฅผ ๋ง๋ฆ
images: mysql:5.7
restart: always ## ์ปจํ
์ด๋๊ฐ ์ด๋ค ์ด์ ๋ก ์ข
๋ฃ ๋์ ๋ ํญ์ ์ฌ์์ํ๋ผ๋ ๋ช
๋ น์ด
volumes: ## docker run์ -v์ ๊ฐ์ ์ญํ
- hostPCํ์ผ:Container๋ด๋ถ์ํด๋
environment: ## dockerfile์ ENV ์ต์
๊ณผ ๊ฐ์ ์ญํ
- MYSQL_DATABASE=mydb
env_file: ## environment ์ต์
๋์ ๋ด๋ถ์ ์ ๋ณด๋ฅผ ์ ์ด๋ ํ์ผ๋ก ๋์ฒด ๊ฐ๋ฅ
- file.txt
ports: ## docker run์ -p์ ๊ฐ์ ์ญํ
- "8888:80"
links: ## Compose ๋ด๋ถ์ A์ปจํ
์ด๋ ์์์ Compose ๋ด๋ถ์ B์ปจํ
์ด๋๋ฅผ
์ฐ๊ฒฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉ (๊ธฐ์กด๊ณผ ๋์ผ)
- "B:nickname"
container_name: ## Container์ ์ด๋ฆ์ ์ง์ ํด์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉ
depends_on: ## ์ปจํ
์ด๋์ ์์๋ฅผ ์ง์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉ
- B ex) A๊ฐ B๋ฅผ ํ์ํ ๋, B๋ฅผ ๋จผ์ ์์ฑํ๊ณ A๋ฅผ ์์ฑํจ
vi ํธ์ง๊ธฐ๋ฅผ ์ด์ฉํด ์์ ๊ฐ์ด yml ํ์ผ์ ์์ฑํด์ค๋๋ค.
docker-compose up -d
: docker compose๋ฅผ ์คํํฉ๋๋ค.
docker-compose stop
: docker compose๋ฅผ ์ค์งํฉ๋๋ค.
docker-compose down
: docker-compose up ๋ช ๋ น์ด๋ก ์๊ธฐ๋ container๋ฅผ ์ญ์ ํ๋ ๋ช ๋ น์ด์ ๋๋ค.
โ dockerignore
git์ ํตํด ์์
ํด๋ณด์ ๋ถ๋ค์ ํ๋ฒ์ฏค์ ๋ณด์
จ์ .gitingore
์ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. Container๋ฅผ ๋ง๋ค๊ณ ๋ฃ๋ค๋ณด๋ฉด COPY
๋ช
๋ น์ด๋ฅผ ํตํด A ํด๋์ ์๋ ํ์ผ๋ค์ B ํด๋๋ก ๋ณต์ฌํ๋๋ฐ, A ํด๋์ ์ธ๋ฐ์๋ ํ์ผ๊น์ง ์ด๋์ํจ๋ค๋ ๊ฒ์ด์ฃ .
๊ทธ ์์ธ๋ฅผ ์ง์ ํด์ฃผ๋ ํ์ผ์ด ๋ฐ๋ก .dockerignore
์
๋๋ค!
*/A*
: ์ด๋ค ํ๋ถ ๋๋ ํ ๋ฆฌ์์ด๋ flask๋ก ์์ํ๋ ํด๋๋ ํ์ผ์ ๋ชจ๋ ์ ์ธํด๋ผ
A?
: A๋ค์ ํ๊ธ์๋ง ๋ ํฌํจ๋์ด ์๋ ํด๋๋ ํ์ผ์ ์ ์ธํด๋ผ
!A
: ์ ์ธ์กฐ๊ฑด์์ ์์ธ๋ฅผ ๋ก๋๋ค. (A๋ ์ ์ธํ๋๋ฐ A๋ ์ ์ธํ์ง๋ง!)