๊ธฐ๋ณธ์ ์ผ๋ก Compose๋ ๋๋ ํ ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์์ฑํฉ๋๋ค.
๋ช
๋ น์ด ์คํ๋ฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ ์ ํ ์ ์์ต๋๋ค.
๊ฐ ๋ช
๋ น์ ๋ํด -p / --project-name
์ต์
์ ์ ๋ฌํ๊ฑฐ๋
COMPOSE_PROJECT_NAME
ํ๊ฒฝ ๋ณ์.
_each_ ๋ช
๋ น์ --project-name
์ต์
์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
(์๋ฅผ ๋ค์ด) docker-compose up
ํ ๋ ์ต์
์ ์ ๋ฌํ๋ฉด
_another_ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์์ฑ๋๋ ํ๋ก์ ํธ์ ์ธ์คํด์ค ๋๋
๋์ฒด๋๋ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ปจํ
์ด๋.
COMPOSE_PROJECT_NAME
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฒ๋ฆฌ ํ ๋ ์ ์ฉํ์ง ์์ต๋๋ค.
์ฌ๋ฌ ํ๋ก์ ํธ์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด compose๋ ํ๋ก์ ํธ ์ด๋ฆ์ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
ํ๋ก์ ํธ๊ฐ ์ฒ์ ์์ / ๋น๋ ๋ ๋ ๋น๋ ์ปจํ
์คํธ.
ํ๋ก์ ํธ ํ์ผ์ด ๋ฐ๊ฒฌ๋๋ฉด compose๋ ํด๋น ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์๋์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
ํ์ผ์ ์์ฑํ๊ณ ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ํ๋ ค๋ ๊ฒฝ์ฐ ์์ธ๋ฅผ throwํฉ๋๋ค.
--project-name
์ต์
์ ์ฌ์ฉํฉ๋๋ค.
์ต์
์ ์ถ๊ฐ ํ์ฅ์ ํ์ฉํ๊ธฐ ์ํด compose๋ ์จ๊ฒจ์ง .docker-compose
๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
๋น๋ ์ปจํ
์คํธ์ "๋ฃจํธ"๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค. ๊ทธ ๋๋ ํ ๋ฆฌ ์์
ํ๋ก์ ํธ ์ด๋ฆ ๋ง ํฌํจ ๋ project-name
ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
tree -a
.
โโโ .docker-compose
โย ย โโโ project-name
โโโ docker-compose.yml
๋ ผ์ํด์ผ ํ ๋ช ๊ฐ์ง ์ฌํญ์ด ๋จ์ ์์ต๋๋ค.
docker-compose init --project-name=foobar
)docker-compose destroy
)--file
)์ ์ง์ ํ ์ ์์ต๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ ๋์ ๋ฒ์์์;
ํธ์ง : Fig๋ฅผ ์์ฑ์ผ๋ก ์ด๋ฆ ๋ณ๊ฒฝ
ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ํ์ง ์์ต๋๋ค. ๋ฌด์์ ํ๋ก์ ํธ ์ด๋ฆ์ด ๋ง์์ ๋ญ๋๋ค. ๋ ๋์ ๋ฐฉ๋ฒ โ fig.yml ๊ฒฝ๋ก์ ํด์๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ค์ ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ด ๊ฝค ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. CI ํ์ดํ ๋ผ์ธ์ ์ด๋ฏธ์ง๋ก ๋ฌด์์ด๋ ํ ์ ์๋๋กํ๋ ค๋ฉด ํ๋ก์ ํธ ์ด๋ฆ์ ์์์ผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๊ทธ๋ฅผ ๋ค์ ์ง์ ํ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ๊ณ ์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ํ๋ฅผ ์ฝ๊ฒ ์ ์งํ ์ ์์ต๋๋ค. ๋ฌด์จ ์ผ์ด ์์ด๋ ํ๊ฒฝ ๋ณ์์ ์ฌ์ ์๋ฅผ ์ง์ํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ตฌ์ฑ ํ ์์๊ฒ ๋ง๋๋ ์์ด๋์ด๊ฐ ๋ง์์ ๋ญ๋๋ค. ๋น์ทํ ๋
ผ์๊ฐ (# 45)์์ ์ผ์ด๋ฌ๋ค ๊ณ ์๊ฐํฉ๋๋ค. .fig/project-name
์ ํ๋ก์ ํธ ์ด๋ฆ์ด ์์ผ๋ฉด ์ ๋ง ์์ ํ์ผ์ด ๋ง์ด ์์ฑ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. fig.yml
์์ฒด์ ๋ฃ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค (# 45์์ ์ ์๋๊ณ ๋์ปค ์ค ํ๋๊ฐ ์ ์์ ์์ฑํ๋ ๊ฒ์ฒ๋ผ).
๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ ์ฅํ๋ฉด ์ด๋ค ์ด์ ์ด ์์ต๋๊น?
๋ณ๋์ ํ์ผ์ ๋ฃ๋ ์ด์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค. ์ด์ ๋ํ ๋ด ์๊ฐ์ ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค.
--project-name=foobar
)์ ์ ์งํฉ๋๋ค. ์ด๋ ์๋ ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค..fig/project-name
์๋ ํ๋ก์ ํธ์ _ ํด๋น ์ธ์คํด์ค _์ ์ด๋ฆ์ด ์์ต๋๋ค.์๋ง๋ ํ์ผ ์ด๋ฆ์ instance-name
๋๋ ์ด์ ์ ์ฌํด์ผํฉ๋๋ค.
ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ตฌ์ฑ ํ ์ ์๋๋ก ๋ง๋๋ ์์ด๋์ด๊ฐ ๋ง์์ ๋ญ๋๋ค.
์ด ์ ์ ( project-name
ํ์ผ์ ์๋์ผ๋ก ์์ฑ)์ผ๋ก์ด ์์
์ ์ํ ํ ์ _ ๊ฐ๋ฅํ์ง๋ง, ๊ธฐ๋ณธ ์ฌ์ฉ ์ฌ๋ก๋ ์ฌ์ฉ ๋ ์ด๋ฆ์ ์ ์ฅํ๊ธฐ ์ํด _fig_๊ฐ ํ์ผ์ ์์ฑํ๋๋กํ๋ ๊ฒ์ด ์์ต๋๋ค.
์ ๋ง ์์ ํ์ผ์ด ๋ง์ด ์์ฑ๋ฉ๋๋ค.
์ฌ์ค, ๋์์ .fig
๋๋ ํ ๋ฆฌ๋ฅผ ๊ฑด๋ ๋ฐ๋ ๊ฒ์ด์ง๋ง, ๋์ค์ ์ถ๊ฐ๋ก ํ์ํ ์ฌํญ์ด์์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ฃจํธ๋ฅผ ๋ณต์กํ๊ฒํ์ง ์๊ณ ์ถ๊ฐ ํ์ผ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ํ๋ด๋ ๋น์ทํ๊ณ ๊นจ๋ํ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ fig.yml์ ๋ฃ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ ๊ฐ์ง ์ต์
์ด ์ํธ ๋ณด์์ ์ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฆ์ด ํ๋๊ทธ ๋๋ env- ๋ณ์๋ก ๋์ฒด๋์ง ์๋ ๊ฒฝ์ฐ fig.yml
์ ์ด๋ฆ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ์ญ์์ค. .fig/project-name
์์ ํ๋ก์ ํธ๋ฅผ _ ์์ _ํ๋ ๋ฐ ์ค์ ๋ก ์ฌ์ฉ๋๋ ์ด๋ฆ์ ์
๋ ฅํฉ๋๋ค.
ํ๊ฒฝ ๋ณ์์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ๊ณ ์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ํ๋ฅผ ์ฝ๊ฒ ์ ์งํ ์ ์์ต๋๋ค. ๋ฌด์จ ์ผ์ด ์์ด๋ ํ๊ฒฝ ๋ณ์์ ์ฌ์ ์๋ฅผ ์ง์ํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ถ๊ธํ; ์ฌ๋ฌ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น? ์ฆ cd project-a && fig ps
๋ค์์ cd project-b fig <something>
?
์๊ฒฌ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๊ถ๊ธํ; ์ฌ๋ฌ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น?
๋๋ ๋ณดํต ์คํ fig
์์ python-tox
๋๋ ๊ฒฐ์ฝ ์ ๋ง ๋ด ์์ ์ค์ ํ์ง๊ฑฐ์ผ ๊ทธ๋์ ๋ด๊ฐ, ํ๊ฒฝ์ ์ค์ ํ ์ ์์ต๋๋ค. ๋๋ ๋ํ tmux๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์์ผ๋ฏ๋ก ๋ชจ๋ ํ๋ก์ ํธ์ ๋ํด ๋ค๋ฅธ ์
ธ์ ์ฌ์ฉํฉ๋๋ค.
๋ ์ต์ ๋ชจ๋ ์ํธ ๋ณด์์ ์ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ข์์, ๋์ํฉ๋๋ค.
๋ด๊ฐ .fig/instance-name
์์ ํ๋งค๋๋์ง ์๋๋ฉด ์ธ์คํด์ค ๋ณ ์ฌ์ ์๋ฅผ ํฌํจ ํ ์์๋ .fig-instance.yml
์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด๊ฒ์ ์ฌ์ํ ์์ ์ ๊ฐ๊น๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ ์๊ฐํ๊ธฐ; ๊ทํ์ ์ํฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด myapp:build12345
์ ๊ฐ์ด ์์ฑ๋๋ _images_ ๋๋ _containers_?์ ์ด๋ฆ์ ์ ์ด ํ ์์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋น์ ์ ์ํฉ์ ๋ํ "๋๋"์ ์ป๊ธฐ ์ํด์.
"๋ฌด์์"ํ๋ก์ ํธ ์ด๋ฆ ๋ค์์๋ ๋ด ์๊ฐ์ Fig๊ฐ ํ๋ก์ ํธ์ ์ปจํ
์ด๋๋ฅผ ์ฐพ์ ์์๋ ํ ๋ฉ์ง๊ฒ ๋ณด์ด๋ ์ด๋ฆ์ ์ค์ํ์ง ์๋ค๋ ๊ฒ์
๋๋ค. ์ฌ์ฉ์๋ก์ ์๋น์ค ์ด๋ฆ (์ : fig stop web
)์ ํตํด ์๋น์ค ์ปจํ
์ด๋์ ์ก์ธ์ค ํ ์ ์๋ค๋ฉด ์ค์ ์ปจํ
์ด๋์ ์ด๋ฆ์ ์ค์ํ์ง ์์ต๋๋ค.
fig๊ฐ .fig
๋๋ ํ ๋ฆฌ ๋ด์ ๋ก์ปฌ ์ ์ฅ์์์ ID๋ก ์ปจํ
์ด๋๋ฅผ ์ถ์ ํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค (์คํ์ค์ธ ์ปจํ
์ด๋๊ฐ ๋ง์ ๋จธ์ ์์ ์ฑ๋ฅ์ด ํฅ์ ๋ ์ ์์). ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ณ๋์ ๋ฌธ์ ์ ๋ํ ๊ฒ์
๋๋ค.
'ํ๋ก์ ํธ ์ด๋ฆ'ํ์ผ์ "์์ ์ ์ผ๋ก"์์ฑํ๊ฑฐ๋ fig init
๋ฅผ ํตํด "๋ช
์ ์ ์ผ๋ก"๋ง๋๋ ๊ฒ์ ๋ํ ์๊ฒฌ์ด ์์ผ์ญ๋๊น? ์๋ง๋ ๋ค๊ฐ์ค๋ ํด์ผ์ ์๊ฐ์ด ์๋ค๋ฉด ์กฐ๊ธ ์คํ ํด ๋ณผ ์์์ ๊ฒ์
๋๋ค (Python์ผ๋ก ์ฝ๋ฉ ํ ์ ์ด ์์ผ๋ฏ๋ก _really_ ์คํ์ ์
๋๋ค :))
์์ฑ๋๋ ์ด๋ฏธ์ง (์ : myapp : build12345 ) ๋๋ ์ปจํ ์ด๋ ์ด๋ฆ์ ์ ์ด ํ ์ ์์ด์ผํฉ๋๋ค.
์ด๋ฏธ์ง๊ฐ ์ ๋ง ์ค์ํ ๊ฒ ๊ฐ์ง๋ง ์ปจํ ์ด๋ ์ด๋ฆ์ด ์ถฉ๋ํ์ง ์๋์ง ํ์ธํ๋ ๊ฒ๋ ๊ณต์ ํธ์คํธ์์ ์ ๋ง ์ค์ํฉ๋๋ค. ๋๋์ด ์ ์์ด ์ค์ ๋ก ๊ทธ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ๋ชฉํ๋กํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ปจํ ์ด๋์ ์์ธก ๊ฐ๋ฅํ ์ด๋ฆ์ ์ฌ์ ํ โโ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ธ๋ถ ์์คํ (๊ทธ๋ฆผ๋ฟ๋ง ์๋๋ผ)์ด ์ด๋ฆ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์๋ณํ๋ ๊ฒ์ด ์ค์ํ ๋ช ๊ฐ์ง ์์ ์ ์๊ฐํ ์ ์์ต๋๋ค.
์ปจํ ์ด๋ ์ด๋ฆ์ด ๋ฌด์์ธ์ง ์ด๋ฏธ ์๊ณ ์๊ธฐ ๋๋ฌธ์์ด ๋ ๊ฐ์ง ๋ชจ๋ ์ง๊ธ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ์ด๋ฆ์ ์ฐพ์์ผํ๋ค๋ฉด ์ข ๋ ๋ณต์กํฉ๋๋ค.
fig๊ฐ .fig ๋๋ ํ ๋ฆฌ ๋ด์ ๋ก์ปฌ ์ ์ฅ์์์ ID๋ก ์ปจํ ์ด๋๋ฅผ ์ถ์ ํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ด๊ฒ์ด ์ฑ๋ฅ ํฅ์์ด ๋ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ค์ด์ง๋ง ์ด๊ฒ์ด ์๋ชป๋ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ๊ฑฑ์ ํฉ๋๋ค. ๋ฌดํ๊ณผ์ ์ง์์ ์ธ ์ํ๋ฅผ ์ถ๊ฐํ๋ฉด ์ํ์ ํจ๊ป ๋ง์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด dockerd์ ๋ผ๋ฒจ๋ง ์์คํ ์ ์ํด ์ฒ๋ฆฌ๋๋ ๊ฒ์ ํจ์ฌ ๋๋ณด๊ณ ์ถ์ต๋๋ค. fig๊ฐ ์ปจํ ์ด๋์ ๋ผ๋ฒจ์ ๋ถ์ธ ๋ค์ ํด๋น ๋ผ๋ฒจ์ด์๋ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์ฟผ๋ฆฌ ํ ์ โโ์๋ค๋ฉด ๋ชจ๋ ์ํ๋ฅผ ๋จ์ผ ์์น (dockerd)์ ๋ณด๊ดํฉ๋๋ค. ์ธ์ ๊ฐ ์ด๊ฒ์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ์์์์ ์๊ณ ์์ต๋๋ค. ๋ก๋๋งต์ ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
'ํ๋ก์ ํธ ์ด๋ฆ'ํ์ผ์ "์์ ์ ์ผ๋ก"์์ฑํ๊ฑฐ๋ fig init๋ฅผ ํตํด "๋ช ์ ์ ์ผ๋ก"๋ง๋๋ ๊ฒ์ ๋ํ ์๊ฐ์ด ์์ผ์ญ๋๊น?
๋๋ ์์ ์ ์ผ๋ก ๋ ์ด์ ๋ฒ์ ๊ณผ ํธํ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด fig init
๋ฅผ ํผํ๊ณ ์ถ์ต๋๋ค. basedir๋ฅผ ์ฌ์ฉํ๋ ๋์ <basename>-<4 digit random id>
์ ํ๋ก์ ํธ ์ด๋ฆ์ ์์ ์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ฌดํ๊ณผ๊ฐ ์์์ ์ด๋ฆ์ ์์ฑํ๊ธฐ ์์ํ๋ฉด ๋จ์ผ ํธ์คํธ์์ 1000 ๊ฐ ์ด์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ์ด๋ฆ์ผ๋ก ๋ ์ด์ ์๋ณ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ ์ด๋ฆ์์ ๋ฉ์ด ์ง ๊ฒ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถ๊ฐ ํด์ฃผ์ ์ @ frank-dspeed ๊ฐ์ฌํฉ๋๋ค. ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด, ๋น์ ์ fig๋ก ์ปจํ ์ด๋๋ฅผ _start_ํ์ง๋ง ๊ทธ ํ Docker๋ฅผ ํตํด ์ง์ _ "manage"_ํ์ฌ Fig์์ ์ฌ์ฉํ๋ ๋ช ๋ช ๊ท์น์ ์ฌ์ฉํฉ๋๊น?
https://github.com/docker/docker/pull/9882- ๋ฉํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ปจํ ์ด๋ ์ด๋ฆ๋ฟ๋ง ์๋๋ผ ์ปจํ ์ด๋๋ฅผ ์๋ณํ๋ ๋ ๋ง์ ๋ฐฉ๋ฒ์ ์ ๊ณต ํ ์ ์์ต๋๋ค.
์ ์, ์๋ฅผ ๋ค์ด ๋จ์ํ ์๋ก์ด ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ ์์ ๋ง์ดํ์ง๋ง ๊ทธ ๊ฒฝ์ฐ ๋จ์ํ ENV๋ฅผ ์ถ๊ฐํ์ฌ ๋๋ธ ๋ค์ ๊ทธ๊ฒ์ ๊ตฌ๋ฌธ ๋ถ์ ํ ์์๋ costum fild๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค : dart :
ํ๋ก์ ํธ ์ด๋ฆ์ ๋ชจํธํจ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด fig์ ์ฑ ์์ด์ด์๋ ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ๋น์ ์ ์ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ์ ๋, ์์์ ์ด๋ฆ์ด ์์ฑ๋๋ฉด FIG_PROJECT_VARIABLE
๋ฐ --project-name
-์ต์
์ด ์ธ๋ชจ ์๊ฒ๋ฉ๋๋ค. 'ํ
ํ๋ฆฟ'์๋น์ค์ ํธ๋ฆฌํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ๋ชจํธํจ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด fig์ ์ฑ ์์ด์ด์๋ ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ณ๋ก ํ์ ์ด ๋ค์ง ์์; Fig. ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ปจํ ์ด๋๋ฅผ "์กฐ์ฉํ"๋ฎ์ด ์ฐ๋ ์ด์ ๋ ๊ฐ์ ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ์์์ ๊ฒฝ์ฐ ๋๋๋ก ๋ถ์พํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ด๊ฐ ๋น์ ์ ์ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ์ ๋, ์์์ ์ด๋ฆ์ ์์ฑ์ FIG_PROJECT_VARIABLE๊ณผ --project-name-option์ ์ธ๋ชจ ์๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค. 'ํ ํ๋ฆฟ'์๋น์ค์ ํธ๋ฆฌํฉ๋๋ค.
์์ ๋ ผ์์ ๋ฐ๋ผ ์ด์ ๊ฐ์ ๊ฒ์ด ํจ๊ณผ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
--project-name
๊ฐ ์ ๊ณต๋ ๊ฒฝ์ฐ์ด๋ฅผ ์ฌ์ฉํ๊ณ .project-name
์์ฑ / ์
๋ฐ์ดํธ? ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.--project-name
์ (๋) ์ ๊ณต๋์ง ์์ง๋ง FIG_PROJECT_NAME
์ (๋) FIG_PROJECT_NAME
(๊ทธ๋ฆฌ๊ณ .project-name
์ฐ๊ธฐ / ์
๋ฐ์ดํธ?).project-name
๊ฐ ์ค์ ๋์ด ์์ต๋๋ค. .project-name
.project-name
์๋๋ค.์ด๋ฆ์ ๊ด๋ฆฌํ๊ณ fig์ ์ ๋ฌํ๋ ์คํฌ๋ฆฝํธ์์ fig๋ฅผ ์ฌ์ฉํ๋ ๋๊ตฐ๊ฐ์ ๊ด์ ์์ ๋ณด๋ฉด ํ๋ก์ ํธ (์ ๊ฒฝ์ฐ์๋ ํ ํ๋ฆฟ์ด ์๋๋ผ) ์์น์ ์ด๋ฆ์ ์ ์ฅํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ทธ๋๋ ๋ฐฉ๊ธ fig up
์คํํ์ ๋ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ด ๊ฒฐ๊ณผ ์ปจํ
์ด๋์ ์ด๋ฆ์ ์ฌ์ฉ๋๋ค๋ ๊ฒ์ ๋งค์ฐ ์ง๊ด์ ์ผ๋ก ๋๊ผ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ docker ps -a
๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. ์์์ ์ด๋ฆ์ผ๋ก ์ฑ์์ง๋ฉด๋ณ๋ก ๋์์ด๋์ง ์์ต๋๋ค.
--random-name
์ต์
์ด ๊ทํ์ ์ํฉ์ ๋์์ด ๋ ๊น์?
๊ทธ ์ธ์๋ ๋ช ๊ฐ์ง ๋ค์ ์คํ์ด์ค๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด [a-zA-Z0-9_].*
๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ด ๊ด๋ฒ์ํ ๋ฐฐํฌ์ ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด fig.yml์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฌด์์ ๋๊น?
schema-version: 1.1
project_name: foo
containers:
web:
build: .
command: python app.py
links:
- db
ports:
- "8000:8000"
db:
image: postgres
BC๋ฅผ ์ ์งํ๋ ค๋ฉด compose / project.py :: from_config์์
<strong i="9">@classmethod</strong>
def from_config(cls, name, config, client):
if 'schema-version' not in config:
config = {
'schema-version': '1.0',
'containers': config
}
dicts = []
for service_name, service in list(config.containers.items()):
if not isinstance(service, dict):
raise ConfigurationError('Service "%s" doesn\'t have any configuration options. All top level keys in your docker-compose.yml must map to a dictionary of configuration options.' % service_name)
service['name'] = service_name
dicts.append(service)
return cls.from_dicts(name, dicts, client)
@jderusse ๋๋ ๋น์ ์ด ์ ์ํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ๋งค์ฐ ์ข์ํฉ๋๋ค. ์ ์์ # 45์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ผ์ํ๊ธฐ์ ๋ ์ข์ ๊ณณ์ผ ๊ฒ์ ๋๋ค.
์ด์จ๋ ์ด ํฐ์ผ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ผ์๊ฒ ์ต๋๊น? ์ ์ ๋ # 1233์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๊นจ์ง ์์ผ๋ฉด ์ ์ฌ์ฉ์๊ฐ ์ํ ํ ์์ ์ ๊ฒฐ์ ํ ์ ์๋๋กํ์ฌ ๋ ๊ฐ์ง ์ฅ์ ์ ๋ชจ๋ ์ ๊ณตํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋๋ docker-compose.yml
๋ผ๋ ์ด๋ฆ์ ์ํ์ง๋ง ๋ ์๊ฐ ํด๋ณด๋ ๋ณ๋์ ํ์ผ์ด๋ผ๋ ์์ด๋์ด๊ฐ ์ ๋ง ๋ง์์ ๋ญ๋๋ค.
๋ณ๋์ ํ์ผ์ ์ํ๋ ๊ฒฝ์ฐ ๋ฒ์ ์ ์ด์์ ์ ์ธ ํ ์์๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค (๊ฐ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋๋กํ๋ ค๋ ๊ฒฝ์ฐ).
์๋ก์ด ๋คํธ์ํน ์ง์์ผ๋ก ๋คํธ์ํฌ ์ด๋ฆ๋ ๊ตฌ์ฑ ํ ์์๋ ๊ธฐ๋ฅ ์์ฒญ์ด ์์ต๋๋ค (๊ธฐ๋ณธ๊ฐ์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋๋ค). ๋ฐ๋ผ์ ๋ณ๋์ ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋คํธ์ํฌ ์ด๋ฆ, ๊ธฐ๋ณธ ํฌ๊ธฐ ๋ฑ์ ํฌํจ ํ ์ ์์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ ์ ์์ ์ผ๋ถ๋ ์๋์ง๋ง ์ฌ์ ํ ๊ตฌ์ฑ ์คํ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ฉํ ๊ตฌ์ฑ์ ๋๋ค.
๋๋ dnephin์ด ๋งํ ๊ฒ์ ๋์ํฉ๋๋ค. .docker-compose
ํ์ผ
@dnephin sgtm
@mikehaertl ๋ด ์์ ์์๋ .docker-compose
ํด๋๋ฅผ ์ฌ์ฉํ์ง๋ง ์ ์ฅํ๋ ค๋ ์ ๋ณด์ ์์ ๋ฐ๋ผ ํ์ผ๋ ์๋ ํ ์ ์์ต๋๋ค.
@thaJeztah ์, ๋ง์, ์ฃ์กํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋์ณค๋ค.
@mikehaertl์ด ๋ฐฉ๊ธ .fig
์์ .docker-compose
๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ์ต๋๋ค. ;-)
๊ถ๋ฆฌ :)
์ฌ์ค ์ ๋ ๊ฐ๋จํ ํ์ผ์ ์ ํธํฉ๋๋ค. ini ์คํ์ผ์ ์ด๋ป์ต๋๊น? ๋งจ ์์์๋ ์ ์ญ ์ต์ , ์น์ ์ ๋ช ๋ น ๋ณ ์ต์ :
project-name = blabla
[build]
no-cache
์ธ๋ฏธ ๊ด๋ จ ์ ๋ณด์ ๋ํ ๋ช ๊ฐ์ง ์์ด๋์ด๋ ๋์ผํ ํ์ผ ๋๋ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ ์ ์์ต๋๋ค.
์ด์ ์ฌ๋ฌ compose ํ์ผ์ ์ง์ํ๋ฏ๋ก ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉํ compose ํ์ผ ๊ฒฝ๋ก๋ฅผ ํฌํจํ๋ ๊ฒ๋ ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ API ๋ฒ์
์๋ง๋ docker_host
?
๊ทธ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์๋ฐ (์ถ๊ฐ๋จ)
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ ๋ Docker ๊ตฌ์ฑ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ ์ ํด์ ธ์๋ ์์ ์ ์์ผ๋ฉฐ ์ด์ ๋ค๋ฅธ ์๋น์ค์ ๋ณต์ ํ๊ณ ์์ต๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋์ผํ ํ์ ๋๋ ํ ๋ฆฌ (๋ฐ๋ผ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ด๋ฆ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, ๋์ผํ ํธ์คํธ์์ 2 ๊ฐ์ ์๋น์ค๋ฅผ ์์ ํ๊ฒ ์คํ๋ง ํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ด ๊ธฐ๋ณธ๊ฐ์ด๋๋๋ก ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์๋ ์์ง๋ง ์ด๋ฏธ์ง ๋น๋์ ํ์ผ ๋ณต์ฌ์ ๋ํด 100 % ๊ธ์ ์ ์ธ ๊ฒ์ ์๋๋๋ค.
์ฌ๊ธฐ์๋ Makefile ํ๊ฒ๊ณผ ๋น์ทํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ฌ์ฉ์ ์ ์ docker-compose
๋ช
๋ น์ ์คํํ๋ ค๋ฉด -p customname
๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
์ง๊ธ์ /home/alice/myproject
๋ฐ /home/bob/myproject
docker-compose ์ค์ ์ด ์๋ก์ ์ปจํ
์ด๋๋ฅผ ๋ฐ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ด๋ ค๊ณ ํฉ๋๋ค. ๋ง์ง๋ง ๋๋ ํฐ๋ฆฌ ์ด๋ฆ ๋์ ์ ์ฒด ํ์ผ ๊ฒฝ๋ก์์ ์ปจํ
์ด๋ ์ด๋ฆ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@ chris-martin ์ด๊ฒ์ ๋จ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค ...
alias docker-compose="docker-compose -p ${PWD}"
docker-compose๋ ํ๋ก์ ํธ ์ด๋ฆ์์ /
์ ๊ฑฐํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ํ์ฉ๋๋ ๋ฌธ์๊ฐ ๋ฌธ์ํ๋์ด ์์ต๋๊น?
๋ด ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ํ๋ก์ ํธ ๋ฃจํธ์ docker-compose.yml์ ๋ฃ์์ต๋๋ค. ์ด๋ ์ ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ชจ๋ git ์ ์ฅ์๋ฅผ ๋์ผํ ๋๋ ํ ๋ฆฌ (์ : $ HOME ๋๋ $ HOME / projects)์ ๋ฃ๋ ๊ฒฝํฅ์ด์๋ ๊ฒฝ์ฐ ์ฝ๊ฐ์ ๋ณดํธ๋ฅผ ๋ถ์ฌํ์ง๋ง ๋ค๋ฅธ ๊ตฌ์กฐ (์ : ์กฐ์ง ๋น ํ๋์ ๋๋ ํ ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ๋ฉ๋๋ค. ์์ฃผ ์ฌ์ฉ) ๋๋ ์ปดํจํฐ๊ฐ boot2docker๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ docker-machine์ด ๊ณ ์ ํ VM์ ์ ๊ณตํ๋์ง ํ์ธํ์ง ์๋ ํ ๋์ผํ ์์์ ์ฌ์ฉ์๊ฐ์ ์ ๋ณด๋ฅผ ์ ์ถํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
# 2294 ๋๋ docker-machine์ผ๋ก ๋ ์์์ ์ด๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ํ ํ๋ก์ ํธ ๋ฃจํธ์ ๋ฃ๊ณ ๋ค๋ฅธ ํด๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ AWS์ ๊ณต์ ๋จธ์ ์ด ์๊ณ ๋ฃจํธ์ docker-compose.yml์ด ์์ด๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ํ์ฌ ๋ฐ์ํ๋ฉด ์ปจํ ์ด๋ ์์ / ์ค์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋ก์ด v2
๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด https://github.com/docker/compose/issues/745#issuecomment -74028861์์ ์ธ๊ธ ํ ๊ฒ์ฒ๋ผ ๊ตฌํํ ์ ์์ต๋๋ค.
์ค์ ๋ก๋ container_name_prefix
์
๋๋ค.
๋ฟก๋ฟก
์ค์ ๋ก๋ container_name_prefix ์ผ ๋ฟ์ด์ฃ ?
volume_name_prefix
, image_name_prefix
๋ฐ network_name_prefix
๋ก๋ ์ฌ์ฉ๋๋ฏ๋ก project_name
๊ฐ ๋ ์ผ๋ฐ์ ์ธ ์ฉ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
.docker-compose
๋ ๋ง์๋ฉด์์ docker-compose.override.yml
์ ์ต์ํ๊ฒ ๋ค๋ฆฝ๋๋ค. ๋ํ ์ด๋ฏธ YAML์ ๋ฐ์๋๋ฐ ๋ค๋ฅธ ๊ตฌ์ฑ ํ์ (์ : ini)์ ๋์
ํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
๋ฐ๋ผ์ @JosephEarl ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ฑํํ๊ธฐ ์ํด project_name
ํค๋ฅผ docker-compose.yml
์ ์ถ๊ฐํ๋ผ๋ # 745 (์ฃผ์) ์ @jderusse ์ ์์ ์ฐฌ์ฑํฉ๋๋ค.
docker-compose.override.yml
๋ฅผ ์ฌ์ฉํ๊ณ .gitignore
๋ฅผ ํตํด ์ ์ธํ์ฌ ์ฌ์ฉ์ ๋ณ ์ฌ์ฉ์ ์ง์ ์ ์ด๋ฏธ ๊ตฌํํ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ๋ช
์ ์ ์ผ๋ก ์ฌ์ฉ์ ๋ณ ์ฌ์ ์ ํ์ผ์ด ํ์ํ ๊ฒฝ์ฐ .docker-compose.local-override.yml
์ ์ํฉ๋๋ค.
YAML์ ๊ตฌ์กฐ์ ๊ด๋ จํ์ฌ project_name
๋ฅผ ํฌํจํ๊ณ ํฅํ ๋ค๋ฅธ ๋ณ์๋ฅผ ํฌํจ ํ ์์๋ project
๋ผ๋ ์ ์ต์์ ํค๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ต์์ ๋ค์ ์คํ์ด์ค๊ฐ ์ค์ผ๋๋ ๊ฒ์ ๋ฐฉ์ง ํ ์ ์์ต๋๋ค. ์ค๋ช
ํ๊ธฐ ์ํด :
project:
project_name: "your-project"
network_prefix: "abc"
network_prefix
๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋คํธ์ํฌ ์์ฒด์ ์ด๋ฆ์ ์ง์ ์ฌ์ฉ์ ์ง์ ํ๋ ๊ฒ์ด ๋ ์ดํดํ ์ ์์ต๋๋ค. ๋ด๊ฐ ์๊ธฐ๋ก๋ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
project_name
์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค.์์์ ์ ์ํ ์ ์์ ๋์๊ฒ ์ข๊ฒ ๋ค๋ฆฝ๋๋ค. ์ถ๊ฐ ๊ตฌ์ฑ ํ์ผ์ ๋์ ํ๊ณ ์ถ์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
์ด ๋ฌธ์ ์ ๊ฐ๋
์ +1
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ์ ์ฅ์์ ๋ค๋ฅธ ํ์ผ์ ์ถ๊ฐํ๋ ๋์ docker-compose.yml
์์ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด์๋ +1ํ์ญ์์ค.
์ด์ ์๊ฒฌ์ ์์ฝํ๋ฉด : ํ๋ก์ ํธ ์ด๋ฆ์ ์กฐํ ์์์ ๋ํ ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด์ ํญ๋ชฉ์ด ์ดํ ํญ๋ชฉ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
--project-name
์ฌ์ฉCOMPOSE_PROJECT_NAME
์ฌ์ฉํฉ๋๋ค.project_name
์์ ํค docker-compose.yml
(๋๋ ํด๋น ์ค์ ์ด ์ ์ฅ๋์ด์๋ ๊ณณ).basename
2 ๋ 3์ ์ฐ์ ์์๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
--project-name
์์ ์ผ๊ด์ฑ์ ์ํด COMPOSE_PROJECT_NAME
๋ project_name:
๋ณด๋ค ํ์คํ ์ฌ์ ์ํด์ผํฉ๋๋ค.COMPOSE_PROJECT_NAME
๋ฅผ project_name:
๋ณด๋ค ์ฐ์ ํ๊ฒํ๋ฉด ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ด ์ค์๋ก ์๋ชป๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋๋ฒ๊ทธํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๊น?BC๋ฅผ ์ ์งํ๊ธฐ ์ํด ๊ธฐ๋ณธ๊ฐ %(project_name)s_%(service_name)s_%(instance_number)s
์ ํจ๊ป ์ ์์ฑ container_name_pattern
์ ๋์
ํ๋ ๊ฒ์ ๋ฌด์์
๋๊น?
์ด ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ hardcodedproject_%(service_name)s_%(instance_number)s
์์ ๋กญ๊ฒ ๋ณ๊ฒฝํ๊ณ ์ด ๋ฌธ์ ๋ฅผ ํ์คํ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ 10 ๋ถ ๋์ ํ์ธํ ํ ๋ฐฉ๊ธ์ด ๋ฌธ์ ์ ๋๋ฌํ์ต๋๋ค.
๋ด๊ฐ ์ ์ผ ๋จผ์ ํ ์ผ์ Compose File Reference ๋ฌธ์์์ ์ฌ๋ฐ๋ฅธ ํค๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ์์ผ๋ฏ๋ก docker-compose.yml
์์ project_name
ํค์ +1
: +1 : @ cr7pt0gr4ph7 ์ ๋ต์ ๊ฒฝ์ฐ
@ cr7pt0gr4ph7 ์ ๋ต์ ๊ฒฝ์ฐ +1
Compose์๋ ํ๊ฒฝ ๋์ฒด๋ฅผ์ํ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋์ ์ฌ๋๋ค์ด ๊ด์ฌ์ด ์๋ค๋ฉด ์ค์ค๋กํ๊ฒ ํ ์ ์์ต๋๊น?
๋ฐ๋ฉด์ ๋์ปค ๋จธ์ ์ ์์ฑ ๋น๋๊ฐ ๋น๋ ๋ ๋จธ์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋์ ์ฌ์ฉํ๋ฏ๋ก ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ๋์์ด ๋์ผํ๊ฒ ์๋ํด์ผํฉ๋๋ค. ํ , ์ด๊ฒ์ ์ด๋ ค์ด ์ผ์ ๋๋ค.
https://github.com/docker/compose/issues/745#issuecomment -182296139 ๋ง์ต๋๋ค. ํ๊ฒฝ ๋ณ์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ํ๋ compose ํ์ผ์ ๊ฐ๋ณด๋ค ์ฐ์ ํฉ๋๋ค (ํ๋ก์ ํธ ์ด๋ฆ์ด compose ํ์ผ์ ์ํ๋ค๊ณ ๊ฐ์ ).
๊ณ ๋ คํด์ผ ํ ์ฌํญ, ๊ฐ๊ฐ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ์ฌ๋ฌ compose ํ์ผ์ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น?
ํ์ผ์ด "๊ธฐ๋ณธ"๋๋ "์ถ๊ฐ"๊ฐ๋๋๋ก ๊ฐ์ ํ ์์๋ ์ค๋ฅ๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ง๊ธ์ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ชจ๋ ํ์ผ์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ ํ์ผ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฒฝ๊ณ ๊ฐ ํฉ๋ฆฌ์ ์ผ ์๋ ์๊ณ ์์ ํ ๋ฌด์ํ ์๋ ์์ต๋๋ค (์ต์ ์ด๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ๊ฐ์ ๋ฌด์ํ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค).
๊ณ ๋ คํด์ผ ํ ์ฌํญ, ๊ฐ๊ฐ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ์ฌ๋ฌ compose ํ์ผ์ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น?
docker-compose -f compose1.yml -f compose2.yml up
์ ๊ฐ์ ์์
์ ์ํํ๊ณ ๋ ํ์ผ ๋ชจ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ์ด๋ฆ์ compose2.yml
์ด์ด์ผํฉ๋๋ค.
๋๋ ๋ชจ๋๊ฐ ๋ด๊ฐ ์ด๋ฏธ ์ข์ํ๋ ์๋ฃจ์
์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค :-) ์ฆ docker-compose.yaml์ project_name
. docker-compose.yaml ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ํฌํจํ๋ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค.
๋ด ํ๋ก์ ํธ์์ HTTP 500 ๋ด๋ถ ์๋ฒ ์ค๋ฅ ํ์ด์ง์์, ๋๋ ์๋ฅผ ๋ค์ด ๋๋ ๊ทธ์๊ฒ, ์ด๋ป๊ฒ ํด๊ฒฐํ๋ ค๋ฉด ๊ฐ๋ฐ์์๊ฒ ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ / ๊ทธ๋
๊ฐ S / ๊ทธ๊ฐ ํ ์์๋ zcat database-dump.tgz | docker exec -i projectname_db_1 psql
์๋ฒ ํต์ง์ ๊ฒฝ์ฐ ๊ทธ ์ด๋ค PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ฌ์ฉ์๊ฐ ์์ฑ๋์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ง์ projectname
๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์๋ง ๋ฉ์์ง๋ฅผ ์ฝ์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ์ ์ ์์ต๋๋ค.
COMPOSE_PROJECT_NAME์ด compose.yml์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ ํ ๋ ๊ฒฝ๊ณ ๊ฐ ์์ด์ผํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.์ด ๋์์ ๊ธฐ์กด Docker ๋ช ๋ น์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋ฆฌ์ ์ด์ง๋ง ์ ๊ท ์ฌ์ฉ์์๊ฒ ํนํ ๋ ผ๋ฆฌ์ ์ด๊ฑฐ๋ ๋ถ๋ช ํ์ง ์์ต๋๋ค.
@ cr7pt0gr4ph7 ์ ๋ต์ ๊ฒฝ์ฐ +1
๋ด๊ฐ ์๋ฌด๊ฒ๋ ์ฐพ์ ์ ์์๊ธฐ ๋๋ฌธ์ ์ง์ ๋ฌธ์ ๋ฅผ ์ด๊ธฐ ์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฒ์ํ์ต๋๋ค.
docker.compose.yml ํ์ผ์์ project_name
์ ๋ํ +1. v2์์๋ ์ด๊ฒ์ด ์ ์ ๋ ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
COMPOSE_PROJECT_NAME์ด compose.yml์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ ํ ๋ ๊ฒฝ๊ณ ๊ฐ ์์ด์ผํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.์ด ๋์์ ๊ธฐ์กด Docker ๋ช ๋ น์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋ฆฌ์ ์ด์ง๋ง ์ ๊ท ์ฌ์ฉ์์๊ฒ ํนํ ๋ ผ๋ฆฌ์ ์ด๊ฑฐ๋ ๋ถ๋ช ํ์ง ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์๊ฐ ๊ตฌ์ฑ ์ค์ ์ ์ฌ์ ์ํ๊ณ ๋ช
๋ น ์ค ์ธ์๊ฐ ๊ตฌ์ฑ ์ค์ ๋ฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ ์ํ๋ ๊ฒ์ ๋งค์ฐ ์ ์์ ์ธ ๋์์
๋๋ค.
์ฐ๋ฆฌ๋ ์ ๋ง๋ก ๊ทธ๊ฒ์ ๋ํ ๊ฒฝ๊ณ ์
๋๊น? ๋๊ตฐ๊ฐ๊ฐ ์ค์๋ก COMPOSE_PROJECT_NAME
๋ผ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ง๋๋
project_name
์์ docker-compose.yml
project_name
๋ง ์ฌ์ฉํ๋ PR์ ๋ง๋ค์ด๋ ๋ ๊น์? ์๋๋ฉด ๋ง์ง๋ง yml
ํ์ผ์ project_name
๊ฐ์ ์ฆ์ ์ฐธ์กฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ถ๊ฐ ํญ๋ชฉ์ ์ํฉ๋๊น?
์ด๊ฑด ์ด๋์?
version: "2"
project:
default_name: "app"
์ด ํ์์ ๋ํ ๊ตฌํ (https://github.com/docker/compose/pull/3118)์ ๋ณ๊ฒฝํฉ๋๋ค. ํ์ง๋ง project
์น์
์ด ํ์ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ....
+1์ด ๊ธฐ๋ฅ์๋ณด๊ณ ์ถ์ต๋๋ค.
@timgriffiths ๋ ํ๋ก์ ํธ์ ํ๊ฒฝ ํ์ผ์ ์ถ๊ฐํ์ฌ ์ต์ RC์์ ๊ฐ๋ฅํ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
@deizel ๊ทธ๋์ ํ๊ฒฝ ํ์ผ์ ์ดํด ๋ณด์์ง๋ง ์ฌ์ ํ compose ํ์ผ ๋ด์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ ํ ์์๋ ์ข์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ์ ์ํฉ์์๋ Prod, Staging, UAT, Dev๊ฐ ํ์ผ์ ๊ตฌ์ฑํ์ฌ ๋ค๋ฅธ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์์ํ ์ ์์ผ๋ฉฐ ๋๋ก๋ ๋์ผํ ๋ผ์์ Staging ๋ฐ UAT ํ๊ฒฝ์ ์ค์ ํ์ฌ ํ๊ฒฝ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณ์ ๋๋ ๊ทธ๋ ์ง ์์ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์ด๊ฒ์ ์ค์ ํ๋ ๊ฒ์ ๊ธฐ์ตํ๋ ๋ชจ๋ ๊ฒ์ ์์กดํฉ๋๋ค. ๋ง์น ์์ฑ ํ์ผ์์๋ ๊ฒ์ฒ๋ผ ๋ชจ๋ ๊ฒ์ด ์ ์ฅ์์ ์ฒดํฌ์ธ๋๊ณ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ชจ๋ ๊ฒ์ ์ธ๋ผ์ธํ๊ณ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ ์ ์์ต๋๋ค.
+1 compose ํ์ผ์ ๋ฏธ๋ฆฌ ๊ตฌ์ฑ๋ ์๊ฒฉ ๋ณผ๋ฅจ์ ๋ํ ์ฐธ์กฐ๊ฐ์๋ ์ํฉ์ด ์์ต๋๋ค. Compose๋ ํด๋น ๋ณผ๋ฅจ ์ด๋ฆ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์๋์ผ๋ก ์ถ๊ฐ ํ ๋ค์ ์ด๋ฆ์ด ์ผ์นํ์ง ์์ ๋ง์ดํธ์ ์คํจํฉ๋๋ค. compose yml ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ช ์ ์ ์ผ๋ก ์ค์ ํ ์ ์์ผ๋ฉด ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅผ ์์๋ ๋ชจํธํ ์ธ๋ถ ํ์ผ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์จ๊ธฐ๋ ๋์ ํ๋ก์ ํธ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ด๋ฆ ์ง์ ๊ท์น์ด ํจ์ฌ ๋ ๋ถ๋ช ํด์ง๋๋ค.
@edevenport ๊ทํ์ ๊ฒฝ์ฐ ๋ช ๋ช ๋ ๋ณผ๋ฅจ์ ์ธ๋ถ ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
# docker-compose.prod.yml
volumes
dbdata:
external:
name: my-project-db-data
@fesor ๊ฐ์ฌํฉ๋๋ค-๋ ์์ธํ ์ค๋ช ํ์ด์ผ ํ์ด์. ์ค์ ๋ก ๋ค์๊ณผ ์ ์ฌํ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ glusterfs ๋ณผ๋ฅจ์ ๋ง์ดํธํ๊ณ ์์ต๋๋ค.
...
volumes:
- media:/data/media:ro
volumes:
media:
driver: glusterfs
์ด ๊ฒฝ์ฐ media
๋ ํธ์คํธ์์ projectname_media
๊ฐ๋๋ฉฐ glusterfs ๋ณผ๋ฅจ์ด ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก ๋ฏธ๋ฆฌ ์์ฑ๋์ง ์๋ ํ ๋ง์ดํธ์ ์คํจํฉ๋๋ค. glusterfs ๋ณผ๋ฅจ์ ํธ์คํธ์ ์๋์ผ๋ก ๋ง์ดํธํ๊ณ docker-compose ํ์ผ์์ external
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๊ฐํ์ง๋ง ๋ฏธ๋ฆฌ ๋ชจ๋ ๋
ธ๋์์ ์๋์ผ๋ก ์ํ ํ ํ์๊ฐ ์์ต๋๋ค.
@edevenport ๋๋ ๊ทธ๊ฒ์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ docker volume create
๋ฅผ ์ฌ์ฉํ์ฌ์ด ๋ณผ๋ฅจ์ ์๋์ผ๋ก ์ถ๊ฐํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
volumes:
- media:/data/media:ro
volumes:
media:
external:
name: my-glusterfs-media
๋ฐ๋ผ์ ํ๋ก์ ํธ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ผ๋ฉฐ ์ ๋์ฌ๋ฅผ ์ ๊ฑฐํ์ญ์์ค.
@timgriffiths ์ ๊ฒฝ์ฐ๋ ๋ ๋ณต์กํ๋ฉฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ๊ธฐ์ตํ์ง ์๊ธฐ ์ํด docker-compose
์ฃผ์์ ๊ฐ๋จํ ๋ํผ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@fesor ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ค๋ช ํด๋ ์ด๋ฆ์ compose ํ์ผ์
@timgriffiths ๋๋ PR์ ๋ง๋ค์์ต๋๋ค (https://github.com/docker/compose/pull/3118)-์๋ง๋ ์ด๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ compose ํ์ผ์ด์๋ ๊ฒฝ์ฐ ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค.
@fesor PR์ด ์๋ฒฝ ํ ๊ฒ์ด๋ผ๋ ๊ฒ์ด ํฉ๋ณ ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
์ด์ Compose๋ ํ๊ฒฝ ํ์ผ์ ์ ๊ณตํ๋ฏ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์งํ ์ ์์ต๋๋ค.
@mkuzmin COMPOSE_FILE
์ด (๊ฐ) ์๋ค๋ ๊ฒ์ด ์ฌํ์ง๋ง COMPOSE_OVERRIDE_FILE
์ด (๊ฐ) ์์ต๋๋ค.
@fesor AFAIK ์ฌ๋ฌ ํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค.
@ schmunk42 ํ๋ก์ ํธ ์ด๋ฆ๋ ์ง์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๊ณ ์ถ์ต๋๋ค.
docker-compose up -d
๋์ ์
docker-compose -f $COMPOSE_FILE -f $COMPOSE_OVERRIDE_FILE \
up -d
์์ ์์์ COMPOSE_PROJECT_NAME
๋ CI๋ก ์ง์ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ .env
ํ์ผ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ฉ์ง์ง๋ง ํ๋ก์ ํธ ์ด๋ฆ์ด ์ง์๋๋ ๊ฒฝ์ฐ์๋ ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
๋๋ ํ๊ฒฝ ๋ณ์๋ฅผ DRYํ๊ธฐ ์ํด .env
๋ฅผ ์ฌ์ฉํ์ง๋ง (๊ทธ๋ฆฌ๊ณ docker-compose <1.7์ ๊ฒฝ์ฐ์๋ ๊ฐ๋จํ ๋ํผ๊ฐ ์์ต๋๋ค), ๋ค๋ฅธ ๋ฌธ์ ๋ ํด๊ฒฐํ์ง ์์ต๋๋ค. @timgriffiths๋ ์ด๋ฏธ swarm ํด๋ฌ์คํฐ์ ๋ฐฐํฌ ํ ์ฌ๋ก๋ฅผ ์ง์ ํ์ต๋๋ค.
COMPOSE_FILE=one.yml:two.yml
๋ ์ฌ๋ฌ ํ์ผ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ๋ฐ๋ผ์ $COMPOSE_FILE
์ฌ์ ์ ํ์ผ์ ํฌํจํ๋ฉด๋ฉ๋๋ค.
@dnephin ์ ๊ทธ ๊ธฐ๋ฅ์ ๋์ณค์ต๋๋ค.
๊ธ์ ... ๊ตฐ์ง ๋ฐฐํฌ์ ๋ํด, ๋๋ ์ด๋ฏธ ๋ด jenkin์ ์์
ENV ๋ณ์์์ COMPOSE_PROJECT_NAME
๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ฏ๋ก ์๋ ๋ฐฐํฌ์๋ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ๊ตฌํ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก ...
์ด ๋ฌธ์ ๋ ๊ฑฐ์ 2 ๋
์ด ์ง๋ฌ์ง ๋ง ์์ง ํด๊ฒฐ๋์ง ์์์ต๋๋ค. ๋์ปค ํ์ด ๋ง์ง๋ง์ผ๋ก ์ ์ ํ ์์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ ํํ ๋ฐฉํดํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค. docker-compose.yml
ํ์ผ์ ๋ํ ๊ฐ๋จํ ์ ๊ตฌ์ฑ ์ง์๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ ๋ง ์ด๋ ต์ต๋๊น?
.env
์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ข์ง๋ง ํญ์ ์ฌ์ฉํ ์์๋ ๊ฒ์ ์๋๋๋ค ( .env
ํ์ผ์ ์ด๋ฏธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ ์ค์ผ ์ ์์ต๋๋ค). ๋ํ ์ฌ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ๊ด๋ จ๋ ๋ค๋ฅธ ์๋ก์ด ๋ฌธ์ ๊ฐ ์ต์ ๋ฒ์ (# 3966)์ ํฌํจ๋๋ ๊ฒ๋ ๋ณด์์ต๋๋ค.
๊ทธ๋์ ์ ๋ง๋ก ๋ฌธ์ ๋ ๋ฌด์์ ๋๊น?
docker-compose.yml
ํ์ผ์ ๋ํ ๊ฐ๋จํ ์ ๊ตฌ์ฑ ์ง์๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ ๋ง ์ด๋ ต์ต๋๊น?
์๋! ๋ฌธ์ ๋ ๊ตฌํ์ ์ด๋ ค์์ด ์์์ต๋๋ค.
.env
์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ข์ง๋ง ํญ์ ์ฌ์ฉํ ์์๋ ๊ฒ์ ์๋๋๋ค (.env
ํ์ผ์ ์ด๋ฏธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ ์ค์ผ ์ ์์ต๋๋ค). ๋ํ ์ฌ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋๋ผ ํด๊ฒฐ์ฑ
์
๋๋ค! .env
ํ์ผ์๋ Compose์์ ์ฝ์ ํ๊ฒฝ ๋ณ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฝ์ ํ๊ฒฝ ๋ณ์๊ฐ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ์ผ (์ app.env
)์ ๋ฃ๊ณ env_file
์ต์
์ ์ฌ์ฉํ์ฌ ์ฐธ์กฐํ์ญ์์ค.
๊ทธ๋์ ์ ๋ง๋ก ๋ฌธ์ ๋ ๋ฌด์์ ๋๊น?
docker-compose.yml
ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ถ๊ฐํ๋ฉด ์ด์์ฑ์ด ๋จ์ด ์ง๋ฏ๋ก ๊ถ์ฅํ์ง ์์ต๋๋ค. ์ด์ docker-compose.yml
์ ์ด์์ฑ์ ํฌ์ํ์ง ์๊ณ ์ง์์ ์ผ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ ( .env
)์ด ์์ผ๋ฏ๋ก ๊ตฌ์ฑ ์ต์
์ผ๋ก ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์ฝํฉ๋๋ค. ์ด๊ฒ์ด์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ์ฃผ๋ ์ด์ ์
๋๋ค.
docker-compose.yml ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ถ๊ฐํ๋ฉด ์ด์์ฑ์ด ๋จ์ด์ง๋๋ค.
์ด๊ฒ์ ์ ํ ์ฌํญ์ด ์๋๊น์? ๊ฐ์ธ์ ์ผ๋ก ์ ๋ docker-compose.yml
์ฒดํฌ์ธํ์ง ์๊ณ ๋ก์ปฌ์์ ์กฐ์ ํ ๋ด ์ ์ฅ์์ docker-compose-example.yml
๋ง ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ ์ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ถ๊ฐ ๋ณผ๋ฅจ์ ์ปจํ
์ด๋์ ๋งคํ ํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ ์ต์
๋ ์ ๊ณตํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
๋
ผ์ ํ์๋ ๋ชจ๋ network
์ต์
์ .env
๋ก ์ด๋ํด์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ํ ์ด์ ํ ์์๊ณ ํธ์คํธ ์์คํ
์ ๋คํธ์ํฌ ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๋ค๋ฅธ ๋ง๋กํ๋ฉด : ๋ฌด์์ด ํ๋ก์ ํธ ์ด๋ฆ์ ํน๋ณํ๊ฒ ๋ง๋๋๊ฐ? docker-compose.yml
์๋ ์ค์ ๋ก ์ด์ ํ ์์๋ ๋ค๋ฅธ ๋ง์ ์ต์
์ด ์ด๋ฏธ ์์ต๋๋ค. ๊ฐ๋ฐ์์๊ฒ ์์ ์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฐ์ฅ ์ ํฉํ ๊ฒ์ ์ ํํ ์์๋ ์ต์
์ ์ ๊ณตํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
๋ํ ์ต์
์ ์ฌ์ฉํ ์ ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Docker ์ฌ์ฉ์ด ๋์ฑ ๊ด๋ฒ์ ํด์ง์ ๋ฐ๋ผ ์ํฌ ํ๋ก ๋ด์์ ์ปจํ
์ด๋ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ํ ๋ช
๋ฟ์ธ ํ๋ก์ ํธ๊ฐ ์ ์ ๋ ๋ณดํธํ ๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก์์๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ์ผ์ ํด๋ ๊ด์ฐฎ์ต๋๋ค. ์ด์ ๊ฐ์ ์ ์ฐ์ฑ์ ํ์ฉํ๋ ๋ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ข์ ์๋ Vagrantfile
๋ฐฉ๋ํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ค์ ํ์คํ ๋๊ท๋ชจ ํ์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ธ๋ก์ด ๋๋ ๊ฐ๋ฐ์ ์๋๋ฆฌ์ค๋ ์ธ์ํฉ๋๋ค.
์ฌ๊ธฐ์ ํ๋ก์ ํธ ์ด๋ฆ ์ต์ ์ ๊ตฌํํ๋ ๊ฒ์ด ์ฑํ์ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. "ํ์ฅ ๊ฐ๋ฅํ ํ๋ก์ ํธ ์ด๋ฆ ๊ตฌ์ฑ ์ ๋ต"์ ๊ด์ฌ์ด์๋ ์๋ก ๊ฐ๋ฐ์๋ฅผ ๋ฒ๋ฆด ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ docker-compose.yml ํ์ผ์ ์ถ๊ฐํ๋ฉด ์ด์์ฑ์ด ๋จ์ด ์ง๋ฏ๋ก ๊ถ์ฅํ์ง ์์ต๋๋ค. ์ด์ docker-compose.yml์ ์ด์์ฑ์ ํฌ์ํ์ง ์๊ณ ์ง์์ ์ผ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ (.env ์ฌ์ฉ)์ด ์์ผ๋ฏ๋ก ๊ตฌ์ฑ ์ต์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์ฝํฉ๋๋ค. ์ด๊ฒ์ด์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ์ฃผ๋ ์ด์ ์ ๋๋ค.
docker-compose.yml
ํ๋ก์ ํธ ์ด๋ฆ์ ์ถ๊ฐํ๋ฉด ์ด๋ป๊ฒ ์ด์์ฑ์ด ๋จ์ด ์ง๋๊น?
IMHO @mikehaertl์ด ๋ง๋ # 3966์์ ๋ณผ ์ ์๋ฏ์ด ์ค์ ๋ก๋ ๊ทธ ๋ฐ๋์
๋๋ค. ์ด ๋ฌธ์ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด docker-compose.yml
์ ์ฅ๋์ด ์์ง ์์ผ๋ฉด Compose๊ฐ ๋ค์์ ๋ํ ๊ท์น์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ด์์ฑ์ด ๋จ์ด์ง์ ๋ณด์ฌ์ค๋๋ค (์ : ๊ฐ์ ์ปดํจํฐ์์ ์์๋ ๋ค๋ฅธ compose ํ๋ก์ ํธ์ ์ถฉ๋ ํ ๊ฐ๋ฅ์ฑ์ด ๋ ์ปค์ง). ์ ์ด๋ ์ฒ์์๋ ๋ง์ ์ฌ๋๋ค์ด ์์ง ๋ชปํ๋ ์ปจํ
์ด๋ ํด๋ ์ด๋ฆ์
๋๋ค.
.env
ํ์ผ์ ์ถ๊ฐํ๋ฉด Compose๋ฅผ ์ฑํํ๋ ค๋ ์๋ก์ด ์ฌ๋๋ค์ ์ํด ๋ฐฐ์ธ ์์๋ ์ถ๊ฐ ์ฌํญ์ด ์ถ๊ฐ ๋ ๋ฟ๋ง ์๋๋ผ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด docker-compose.yml
์์์๋ ๋ด ์ ์ฅ์์๋ ์ถ๊ฐํด์ผํ๊ธฐ ๋๋ฌธ์ ์ถฉ๋ docker-compose.yml
์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ๊ฒ๋ณด๋ค ์ด์์ฑ์ด ์ผ๋ง๋ ๋ค๋ฅธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ํ docker-compose.yml์ ์ด๋ฆ์ ์ถ๊ฐํฉ๋๋ค. .env ํ์ผ์ ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ ์ ์ํฌ์์ ์ฌ์ฉ๋๋ฉฐ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฒ์ด๋๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๊ฐ๋ฐ์ ์ ์ฒด์์ ์ง์ญํ ๋ ์ปจํ ์ด๋๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ค๋ฉด Docker์ ๋ํด ๋ ์์๋ก (์ฒ์์๋) ๋ ์ข์ต๋๋ค. ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ถฉ๋ํ์ง ์๋ ๊ฐ๋จํ ์ง์ ์ ์ ์ํฉ๋๋ค. ์ ๊ทธ๋ฐ์ง ์ค๋ช ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๊ทธ๋ฅ ๊ฐ๋จ
๋ณต์ ์ ์ฅ์
๋์ปค ๊ตฌ์ฑ
๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ ํ @ schmunk42๊ฐ ์ ์ํ ํ์ผ์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ปจํ ์ด๋ ์์ฒด๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ๊ฒฝ ์ฐ์ง ์์์ผํฉ๋๋ค. ํ๊ฒฝ ๋ณ์๋ฅผ ํธ์คํธ๊ฐ ์ ๊ฒฝ ์ธ ์์๋ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
docker-compose.yml
ํ์ผ์์ ์ด์ ๋ํ ์ง์์๋ณด๊ณ ์ถ์ต๋๋ค. ์ผ ๊ฐ ํ์๋ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ์ค์ ํ๋ ๊ฒฝ์ฐ๋ ๋ด์์ ์ ์ ๋ ์ .env
(ํธ์คํธ์ ์ง์ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ) ๋ฐ ๊ฐ๋ณ ๊ต์ฒด๋ก ์ฌ์ฉ ํ์ผ docker-compose.yml
ํ์ผ.
๋ช ๋ช ๋ ์ปจํ ์ด๋๊ฐ ํ์ฉ๋๋ ๊ฒฝ์ฐ ๋ช ๋ช ๋ ํ๋ก์ ํธ๊ฐ ํ์ฉ๋์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
.yml ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ ์ ์๊ฐ ํธ๋ฆฌํ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค๋ฅธ ์น ์๋ฒ์ ๋ํด ๋์ผํ docker-compose ํ์ผ์ด ์์ต๋๋ค (๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช
, ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ณผ๋ฅจ, ๋ก๊ณ ์ ๊ฐ์ ์ฝ๊ฐ์ ์ฐจ์ด์ ๋ฑ). ์คํ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์
๋น 3 ๊ฐ์ ์๋น์ค๊ฐ ์์ผ๋ฉฐ ์์ฑ ํ์ผ์ ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฌ๋ฌ ์๋ฒ๊ฐ ๋๋ํ ์คํ๋ ๋ ์ด๋ค ์๋น์ค๊ฐ ์ด๋ค ํ๋ก์ ํธ์ ์ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
$ COMPOSE_PROJECT_NAME์ ์ ๋์ฌ๋ก ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋ ์ด๋ฆ์ ๋ณ์ ๋์ฒด๊ฐ ํธ๋ฆฌํฉ๋๋ค. .env ํ์ผ ์๋ฃจ์ ์ ์ ์ดํดํ๊ณ ์์ง๋ง ์ด๊ฒ์ (CI) ๋ฐฐํฌ ํ๊ฒฝ์์ ๋ "๊ฐ๋ฐ์ ์นํ์ "์ด์ง ์์ต๋๋ค.
-p ๋๋ ํ๊ฒฝ ๋ณ์ ์ธํธ๊ฐ์๊ณ "docker"ํ์ ํด๋์ docker-compose๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ค๋ฅธ docker-compose์ ํ๋์ docker-compose kill ์ปจํ ์ด๋๋ฅผ ๊ฐ๋ ๊ฒ์ ์ ์๊ฐ์ ์ค์ํ ๋ฒ๊ทธ์ ๋๋ค.
์ฌ๊ฐํ ๋ฐฐํฌ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ฌ์ง๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. -p, .env ๋๋ ๋ค๋ฅธ ๊ณณ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ๋ฌด์จ ์ผ์ด ์ผ์ด ๋ฌ๋์ง ์ ๋๊น์ง ์ ์ ๋์ ์คํ๋ผ์ธ ์ํ๊ฐ๋ฉ๋๋ค. ๋ ๋์ ๊ฒ์ ์ถฉ๋ํ๋ ์๋น์ค๊ฐ ํ์ฌ ์์ ์ค์ธ ์๋น์ค๊ฐ ์๋๋ผ ์คํ๋ผ์ธ ์ํ๊ฐ๋ฉ๋๋ค. ๋น์ ์ ํ๋ณตํ ํ๋ฃจ๋ฅผ ๋ณด๋ผ ๊ฒ์ ๋๋ค :(
@dnephin ๋ง์นจ๋ด ์ด๊ฒ์ ๊ตฌํํ๊ธฐ ์ํด ๋์ปค ํ์ ์ ์งํ๋ ๊ฒ์ ์ ํํ ๋ฌด์์ ๋๊น? ์ผ๋ง๋ ๋ ๋ง์ ๋ถ๋ง ์ฌ์ฉ์๊ฐ ํ์ํฉ๋๊น? ์ด๊ฒ์ ๋ฏฟ๊ธฐ ์ด๋ ค์ด ์ฌ์ํ ์์ ์ด๋ฉฐ ์ฌ์ ํ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์์ต๋๋ค.
์ฌ๊ธฐ์์์ด ๋ฌธ์ ์ ๋ํด ์ฐ๋ คํ๋ ์ ์ผํ ์ฌ๋ ์ผ ์๋ ์์ง๋ง ์ด์จ๋ .
์ค์ ์์๋ ํ๊ฒฝ ์ ํ์ ์ํด .env
๋ฐ app.env
ํ์ผ ๋ง ์์ ํ์ง๋ง ์ด๋ ์ฌ๋ฌ ํ์ผ์ด ์๊ณ yml
ํ์ผ์ ๋ณํฉํ๋ ๋ฐ ์์กดํฉ๋๋ค.
์ด๊ฒ์ด ๊ตฌํ๋๋ฉด BC์ ๋ํด ์๊ฐํ์ญ์์ค.
์ : ํ๋ก์ ํธ ์ด๋ฆ์ด docker-compose.yml
๋ฐ .env
๊ฒฝ์ฐ ํ์๊ฐ ์ฐ์ ํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด .env
๋ฅผ ํตํด์ด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์์กดํ๋ ์ฌ๋๋ค์ ํ์ฌ ์ํฌ ํ๋ก ๋ฐ ํด๋ ์ด๋ฆ์ ์์กดํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์คํ์ด ๊ฒน์น๋ ๊ฒ๊ณผ ์ ์ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
@ schmunk42 .env
๊ธฐ๋ฅ์ ์ ๊ฑฐํด์ผํ๋ค๋ ๊ฒ์ ์๋๋๋ค. .env
์ ํ๋ก์ ํธ ์ด๋ฆ์ ํฌํจํ๊ณ ์ถ๋ค๋ฉด docker-compose.yml
์์ ๊ตฌ์ฑํ์ง ๋ง์ญ์์ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฌ๊ธฐ์์๋ ๋
ผ์๊ฐ ๋ช
ํํ๊ฒ ๋ณด์ฌ ์ฃผ๋ฏ์ด docker-compose.yml
์์๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๊ทธ๋ค์ด ์ํ๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ ์ ์์ด์ผํฉ๋๋ค. ์ ํ์ ๊ธฐ๋ฅ์
๋๋ค. ๋ ๋ค ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ์ฐ์ ์์๋ ๊ฐ๋จํ ๊ท์น์ ์ ์ํ๋ ๊ฒ์
๋๋ค.
Srsly, ๋ช
๋ช
๋ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํ์ญ์์ค. ์ฌ์ฉ ์ฌ๋ก :
ํ๋ก์ ํธ 1 :
docker-compose up --build --remove-orphans
docker-compose up --build --remove-orphans
ํ๋ก์ ํธ 2๊ฐ ์์๋๋ฉด ์ถ๊ตฌ 137 (์ฝ๋ 128 + ๋ ๋ฒจ 9)์ด์๋ ํ๋ก์ ํธ 1์ ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํฉ๋๋ค.
์ด์ ๋ docker system prune
์ (๋ฅผ) ์คํํ๊ณ ๋งค์ผ ๋คํธ์ํฌ๋ฅผ ์ฌ ๊ตฌ์ถํ์ฌ ์์ญ ๊ฐ์ ์ปจํ
์ด๋๊ฐ ์ฃฝ์ง ์๋๋กํด์ผํฉ๋๋ค.
export COMPOSE_PROJECT_NAME=somethingnew
ํต์ฌ ํ์ ๋๊ตฐ๊ฐ๊ฐ ๋ง์นจ๋ด์ด ๊ธฐ๋ฅ์ ์ ์งํ๊ณ ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์์ต๋๊น? ๋๋ฌด ์ค๋ง์ค๋ฝ๊ณ , ๊ณ ์น๊ธฐ ์ฌ์ด ์ผ์ด ์ ๋นํ ์ด์ ์์ด ์ฐจ๋จ๋๋ ๋ฐฉ์์ ๋๋ค.
์ง๊ธ๊น์ง ์ ์ผํ ์ฃผ์ฅ์ docker-compose.yml
์ด์ ๊ฐ๋ฅํ๊ฒ ์ ์งํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ๋ง์ด๋์ง ์์ต๋๋ค.
networks
, port
, ...๊ทธ๊ฒ์ ๋ชจ๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ์ฌ๋๋ค์ด์ด ์ต์ ์ ์ํ์ง ์๋๋ค๊ณ ํด์ ๋ชจ๋ ์ฌ๋ ์ด ์์ ์ ์๊ฒฌ์ ๋ฐ๋ผ์ผํ๋
@mikehaertl ์ด๋ฏธ ์๊ตฌ ํ๋ก์ ํธ ์ด๋ฆ์ด ์์ต๋๋ค. .env
ํ์ผ์ ๋ฃ๊ณ ๊ฑฐ๊ธฐ์ COMPOSE_PROJECT_NAME
๋ณ์๋ฅผ ์ค์ ํ์ญ์์ค. ๋ ์ด์ compose ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์๋ฌด๋ฐ ์ด์ ์ด ์์ต๋๋ค.
@fesor ์ผ๋ฐ์ ์ผ๋ก .env
ํ์ผ์ ์์คํ
/ ํ๊ฒฝ ๋ณ ์ค์ ์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฒ์ ๊ด๋ฆฌํ์ docker-compose.yml
ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ตฌ์ฑ ํ ์ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. .
@fesor : @thasmo ๊ฐ ๋ง๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ compose.yml
ํ์ผ์ ์ง์ ๋๋ ์ต์
์ด ์์ด์ผํฉ๋๋ค. ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ฐ๋ฐ์์ ๊ด๋ จ์ด์๋ ๊ฒฝ์ฐ ๋ฒ์ ์ ์ด์ ์์ด์ผํ๊ธฐ ๋๋ฌธ์
๋๋ค.
@fesor ๋ฏธ์ํ์ง๋ง ๊ฐ์ธ์ ์ธ ์ทจํฅ์ด ์ง์ ํ ๋ ผ์์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ง์ง ์ง๋ฌธ์ .env ๋๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๊ฐ ์๋๋๋ค. ๊ทธ ๋ฐ๋์ ๋๋ค. ์ ๊ทธ๊ฒ์ด ์ํ ์ค์ ํ์ผ์ ๋ฃ์ง ์์ ์ต๋๊น?
๋ช
๋ น ์ค์์ docker
์ ์ ๋ฌํ ์์๋ ๊ฑฐ์ ๋ชจ๋ ์ต์
์ ํด๋น ํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ผ๋ถ ์ ๋นํ ์ด์ ๋ก ํ๋ก์ ํธ ์ด๋ฆ ๋ง ์ ์ธ๋ฉ๋๋ค. ์ด๊ฒ์ ๋
ผ์ ์ฌ์ด์์ ์ผ์ข
์ ์ธ์ข
์ฐจ๋ณ ์ ์ฑ
์
๋๊น? : PI๋ ๊ทธ๋ค ๋ชจ๋์ ๋ํด ๋๋ฑํ ๊ถ๋ฆฌ๋ฅผ ์ฃผ์ฅํฉ๋๋ค! ๊ฐ๋ฐ์๊ฐ ๊ฒฐ์ ํ๋๋กํ๊ณ ์ธ์์ ์ธ ์ ์ฝ์ ๊ฐํ์ง ๋ง์ญ์์ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋งํ์ง๋ง, ์๋ฌด๋ ๋น์ ์๊ฒ์ ์ค๋๋ ์ต์ ์ ๋นผ์์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ง์นจ๋ด์ด ์ถ๊ฐ ์ต์ ์ ์ํฉ๋๋ค. ๊ทธ๊ฒ์ ๊ณตํํฉ๋๋ค.
@dnephin : ์ด ๋ฌธ์ ์ ๋ํ
๊ทธ๊ฒ์ ๊ตฌํํ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ๊ธฐ๊บผ์ด ๋ฐ์๋ค์ด๊ฒ ์ต๋๊น, ์๋๋ฉด ์ ์ง ๊ด๋ฆฌ์ ์ค ํ ๋ช ์ด ์์ฑํ๋๋ก ํ์๊ฒ ์ต๋๊น?
์๋ ํ์ธ์.
* ํ์ compose.yml์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ง @fesor @dnephin ๊ฒ์ ํตํฉ ๊ตฌ์ฑ ์คํค๋ง๋ฅผ ์ฉ์ดํ๊ฒ
ํ๋ก์ ํธ ์ด๋ฆ์ด ์ค์ํ ์ด์ ๊ฐ ๋ช ํํ์ง ์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ์ด๋ค ๋ถ๋ถ๋ ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ ์์กดํด์๋ ์๋ฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ผํ ์ค์ํ ํน์ฑ์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ด๋ฆ๊ณผ ์ถฉ๋ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ ์ค์ ๋ก docker-compose.yml
ํ์ผ ์ ๋ฃ๋ ๊ฒ์ ๋ํ ๋
ผ์์
๋๋ค. ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๋ ์ข
์ข
๊ฐ ํ๋ก์ ํธ์ ๋ํด ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๋ฏ๋ก ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์์ ๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ์ด๋ฅผ ์ฌ์ ์ ํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค ( -p
๋๋ COMPOSE_PROJECT_NAME
). ๋ณ์นญ ๋๋ .env
ํ์ผ์ ๋ฃ์ ์ ์์ต๋๋ค. .
์ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ํ๋ก์ ํธ ํ์ผ์ ๋ฐ๋ํ๋ ๊ฒ์ด ์๋๋ผ์ด ๊ธฐ๋ฅ์ด ์ผ๋ถ์๊ฒ ์ ๊ทธ๋ ๊ฒ ์ค์ํ์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค. Compose ํ์ผ์ ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํด์ผํ๋ ๋ณ๋์ ๋ฌธ์ ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๋๋ 1 ๊ฐ์ ๋๋ ํ ๋ฆฌ์ 4 ๊ฐ์ compose ํ์ผ์ ๊ฐ๊ณ ์ถ์๋ค. ์ฌ๊ธฐ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ด ์๋ชป๋์์ต๋๋ค. ๋ด๊ฐ ๊ฐ์ง ์ ์ผํ ์ต์ ์ ํ๋์ ๋๋ ํ ๋ฆฌ์์ ํ๋์ ์์ฑ ํ์ผ์ ๋ํด์๋ง ์๋ํ๋ .env์ ๋๋ค.
_COMOSE_PROJECT_NAME ๋ฐ -p : _๋ฅผ ๋ฐฐ์ ํ๋ ์ด์
COMPOSE_PROJECT_NAME ๋ฐ -p๋ ์ค์ ์ ๊ธฐ์ตํด์ผํ๋ฏ๋ก ํ๋ก๋์
์ ์ ์ฅ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๊ณ docker compose up์ ์ง์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ฌ๋ A๊ฐ์ด ๋ฉ์ปค๋์ฆ์ ์์กดํ๊ณ ์ฌ๋ B๊ฐ ๊ทธ๊ฒ์ ๋ชจ๋ฅด๋ฉด ๊ทธ๊ฒ์ ํน์ ํ ์คํจ์
๋๋ค.
(์ด๋ฏธ ์์์ ์์ธํ ์ค๋ช
ํ์ต๋๋ค)
@dnephin ์ ์ ์ ํ์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ ํด๋์ htdocs ํด๋์ ์ ์ฅ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค๋ฅธ ๊ด๋ จ ๋ฌธ์ / ๋ฆฌ์์ค๋ฅผ ํ๋์ ๋๋ ํ ๋ฆฌ์ ํจ๊ป ๋ณด๊ดํ ์ ์์ต๋๋ค. ์๊ฒฉ ๊ฐ๋ฐ์์ ํจ๊ป ์ผํ๋ ๊ฐ๋ฐ ์์ . ํด๋ ๊ตฌ์กฐ์ ๋ํด ์๋ฌด ๊ฒ๋ ๊ฐ์ ํ ํ์๊ฐ ์์ผ๋ฉด Docker๋ฅผ ์ฑํํ๋ ๊ฒ์ด ์ฝ์ต๋๋ค. ๋๋ ๊ณผ๊ฑฐ์ ์ด๊ฒ์ ์ธ๊ธํ์ง๋ง, .env๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๊ณต์ ํ๋ ์ ์ฅ์์ ์ผ๋ถ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋์๊ฒ ์ต์ ์ด ์๋๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ด ์ค์ํ ์ด์ ๊ฐ ๋ช ํํ์ง ์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ์ด๋ค ๋ถ๋ถ๋ ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ ์์กดํด์๋ ์๋ฉ๋๋ค.
ํธ์คํธ์์ '๋์ปค-์ปด ํฌ์ฆ ๋ค์ด (docker-compose down)'์ํ๊ณ ๋ด๊ฐ ์ํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ์ปจํ
์ด๋๋ฅผ ๋ค์ด์ํจ ์ผ์ด ๋ ๋ฒ ์ด์ ๋ฐ์ํ์ต๋๋ค! ๋ด๊ฐ ๊ธฐ์ตํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ .env
ํ์ผ์๋ ๊ตฌ์ฑ์ด ์์๋ค๋ ์ฌ์ค์ ๊ธฐ์ตํ์ง ๋ชปํ์ต๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ผํ ์ค์ํ ํ์ง์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ด๋ฆ๊ณผ ์ถฉ๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ค์ ๋ก docker-compose.yml ํ์ผ์ ๋ฃ๋ ๊ฒ์ ๋ํ ๋ ผ์์ ๋๋ค. ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๋ ์ข ์ข ๊ฐ ํ๋ก์ ํธ์ ๋ํด ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๋ฏ๋ก ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์์ ๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์๋ง๋ ๊ทธ๊ฒ์ ๋น์ ์๊ฒ ์ฌ์ค ์ผ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ ์ ์ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์๊ฒ ํด๋น๋์ง ์์ต๋๋ค. ๋ด ์ฑ ๊ตฌ์กฐ๋ myapp/app/docker-compose.yml
. ๋ฐ๋ผ์ ๋ด ๋ชจ๋ ์ฑ์ app
๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๊ณต์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์คํธ์ ์ปจํ
์ด๋๊ฐ ๋ ๊ฐ ์ด์ ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ์ด๋ฅผ ์ฌ์ ์ (-p ๋๋ COMPOSE_PROJECT_NAME) ํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.์ด ๋ฐฉ๋ฒ์ ๋ณ์นญ์ด๊ฑฐ๋ .env ํ์ผ์ ๋ฃ์ ์ ์์ต๋๋ค.
์ง์งํ๊ฒ, ๋๋ ๋ด๊ฐ ์ฌ๊ธฐ Kafka ์์ค์์๋ ๊ฒ์ฒ๋ผ ๋๋ผ๊ธฐ ์์ํ๋ค. docker
์ ๋ํ ๋ชจ๋ ๋ช
๋ น ์ค ์ต์
์ ๊ธฐ๋ณธ์ ์ผ๋ก docker-compose.yml
๋ฃ์ ์ ์๋ค๋ ๊ฒ์ด ๋ถ๋ช
ํ์ง ์์ต๋๊น?
์ฐ๋ฆฌ์๊ฒ ๊ณ์ํด์ ์ง๋ฌธํ๊ณ ์ฐ๋ฆฌ์ ๋๋ต์ ๋ฌด์ํ๋ ๋์ ๋๊ตฐ๊ฐ๊ฐ ๋ง์นจ๋ด ์ ํญ์ ์ ๋นํ ํ ์์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ฆฌ๊ณ ์๋์ค : "...ํ์ง๋ง ํ์ํ์ง ์์ต๋๋ค"๋ ์ ํจํ ์ธ์๊ฐ ์๋๋๋ค!
@dnephin ์์ฒด git ์ ์ฅ์์ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ์์ผ๋ฉฐ ๋ฃจํธ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ๊ธฐ ์ํด ๋ชจ๋ docker ๊ด๋ จ ํญ๋ชฉ์ docker
๋ผ๋ ํ์ ํด๋์ ๋ฃ์ต๋๋ค (๋น๋ ์ปจํ
์คํธ๋ ..
, ๋ชจ๋ ์๋ฆ๋ต๊ฒ ์๋ํฉ๋๋ค).
๋จ์ผ ์๋ฒ์์ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ ค๋ฉด ํ์ฌ ๊ฐ ์ ์ฅ์์ docker/.env.dist
๋ฅผ ๋ง๋ค๊ณ cp docker/.env.dist docker/.env
๋ค์ git clone
cp docker/.env.dist docker/.env
๋ฅผ ๋ง๋ค์ด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก์ ํธ ์ด๋ฆ์ docker
์ด๋ฉฐ ๋ถ๋ช
ํ ์ํ์ง ์์ต๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ .env
์๋ ์ํธ ๋ฑ์ด ํฌํจ๋์ด ์์ผ๋ฏ๋ก .env.dist
๋ณต์ฌ๊ฐ ํ์ํ์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ COMPOSE_PROJECT_NAME
๋ฅผ ์ ์ ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ .env
์กด์ฌํฉ๋๋ค. COMPOSE_PROJECT_NAME
docker-compose.yml
.
docker-compose.yml
๋ด์์ ๋์ผํ COMPOSE_PROJECT_NAME
๋ ๋ฒ ์ฌ์ฉํ๋ฉด ์ปจํ
์ด๋๊ฐ ์์๋๊ณ ์ค์ง๋๋ ๋ฐฉ์์ ๊ฒฐํจ์ด์์ ์ ์์์ ์ดํดํฉ๋๋ค.ํ์ง๋ง .env.dist
๋ณต์ฌํ๋ ๊ฒ์ ์์ ๊ฒฝ์ฐ ์ด๋ฏธ ๋ฐ์ํ๊ณ ์์ต๋๋ค. ๋๋ ์ค์๋ก ๋์ผํ ์๋ฒ์์๋ ๋ ๊ฐ์ ๋ค๋ฅธ .env
ํ์ผ์ ๋์ผํ ์ด๋ฆ์ ํ ๋น ํ ๊ฒฝ์ฐ. ๋ด๊ฐ ์ ์ ํ ์ ์๋ค๋ฉด ๋์๊ฒ๋ ์ด์์ ์ผ ๊ฒ์
๋๋ค default_compose_project_name
์ค๋ฅธ์ชฝ docker-compose.yml
๋ค์์ ๊ฐ์ ์ค๋ฒ๋ผ์ด๋ (override) .env
,์ ๋ด๊ฐ ์ด๋ค ํ๋ก์ ํธ์ ์ค๋น ๋ณต์ฌ๋ณธ์ ์คํํ๋ ค๋ฉด ๊ฐ์ ํด ๋ด
์๋ค ๊ฒฝ์ฐ . ์ด๊ฒ์ ๊ธฐ์์ 100 %์ด์ง๋ง ๋ ํธ๋ฆฌํฉ๋๋ค.
๋๋ ๊ณผ๊ฑฐ์ ์ด๊ฒ์ ์ธ๊ธํ์ง๋ง, .env๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๊ณต์ ํ๋ ์ ์ฅ์์ ์ผ๋ถ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋์๊ฒ ์ต์ ์ด ์๋๋๋ค.
์๋ง๋ ๊ทธ๊ฒ ์ ๋ถ์ ๊ทผ๋ณธ ์์ธ ์ผ ์ ์์ต๋๋ค. docker-compose
์ ์์ด ํ์ผ์ "๋์ฉ"ํ๊ณ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ์ ์ด๋ฆ์ app.env
๋ก ๋ณ๊ฒฝํด์ผํ์ต๋๋ค.
์๋ง๋ docker-compose.env
์ด ์ฌ๋ฐ๋ฅธ ์ ํ์ด์์ ๊ฒ์
๋๋ค.
FWIW : ํ๋ก๋์
์์ .env
ํ์ผ ๋ง ๋ณ๊ฒฝํ๊ณ ์์ผ๋ฉฐ, yml
ํ์ผ์ ํ์ํ ๊ฒฝ์ฐ docker-compose.override.yml
์ ๋ณํฉ๋ฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ ์ .env
ํ์ผ ์์ด๋ ์์ํ์ง ์๋ ๋ฐฉ์์ผ๋ก yml ํ์ผ์ ์ ์ํ๋ ๊ฒ์
๋๋ค. ๋ณ์ image: $IMAGE
.
์ด๊ฒ์ @ schmunk42 ์์ 1 ๋๋ ํ ๋ฆฌ ์ผ์ด์ค์์ 4 ๊ฐ์ docker- compose ํ์ผ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ๋ง?
@RobIsHere ํ์ง๋ง ์ด์จ๋ -f
๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
์ด ๋๊ธ์ @dnephin ์ ๋ํ ๋ต๊ธ :
ํ๋ก์ ํธ ์ด๋ฆ์ด ์ค์ํ ์ด์ ๊ฐ ๋ช ํํ์ง ์์ต๋๋ค.
docker-compose
๊ด๋ฆฌํ๋ Docker ์ปจํ
์ด๋์ ์ด๋ฆ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๊ฒ์ ์์ ๊ฒฝ์ฐ docker-compose ps
๋ ์ด์ ์ docker-compose --project-name <project_name> up -d <container_name>
๋ง๋ ์ปจํ
์ด๋๋ฅผ ์ฐพ์ง ๋ชปํฉ๋๋ค.
๋ํ ์ ์ญ ๋ช
๋ น docker ps
๋ฅผ ์คํํ๋ฉด ์คํ์ค์ธ ์ปจํ
์ด๋ ๋ชฉ๋ก์ ํ๋ก์ ํธ ์ด๋ฆ์ด ํฌํจ๋๋ฏ๋ก ์ถ์ฒ๋ฅผ ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ MySQL์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ฝ๋ ํ๋ก์ ํธ๋ฅผ ํ ๋ฒ์ ํ
์คํธํ๊ณ ๊ฐ ํ๋ก์ ํธ์ mysql
์ปจํ
์ด๋๊ฐ์๋ ๊ฒฝ์ฐ docker ps
๋ ๋ชจํธํ ์ปจํ
์ด๋ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ๋จธ์ ์์ ์คํ๋๋ ๋ง์ Docker ํ๋ก์ ํธ์ ์ปจํ
์คํธ์์ ํ๋ก์ ํธ ์ด๋ฆ์ด ์ค์ํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ์ ์ด๋ค ๋ถ๋ถ๋ ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ ์์กดํด์๋ ์๋ฉ๋๋ค.
Docker Compose ํ๋ก์ ํธ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ค๋ฅธ ๋ณ์์ ๋ค๋ฅธ ์์น์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํด์ผํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ผํ ์ค์ํ ํ์ง์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ด๋ฆ๊ณผ ์ถฉ๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ค์ ๋ก docker-compose.yml ํ์ผ์ ๋ฃ๋ ๊ฒ์ ๋ํ ๋ ผ์์ ๋๋ค.
๋ด ์ฒซ ๋ฒ์งธ ๋จ๋ฝ์ ์ธ๊ธ ๋ ์ด์ ๋๋ฌธ์ ์ด๊ฒ์ _ "ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ผํ ์ค์ํ ํ์ง"_์ด ์๋๋๋ค. ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๋ ์ข ์ข ๊ฐ ํ๋ก์ ํธ์ ๋ํด ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๋ฏ๋ก ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์์ ๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ _all_ ๊ด๋ จ Docker ํ์ผ์ docker
๋๋ ํฐ๋ฆฌ์ ๋ฃ๋ ๊ธฐ๋ณธ์ด ์๋ ๊ฒฝ์ฐ Docker ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์๋ฒฝํ๊ฒ ํฉ๋นํ ๋ฐฉ๋ฒ ์ธ ๊ฒฝ์ฐ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๋ง๋ฒ์ ์ถฉ๋ํ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์์ฑํฉ๋๋ค. ๋ฐ๋ผ์ ์ธ๊ธ ํ ๊ฒ๊ณผ ๋์ผํ ์ถฉ๋์ด์ด ํน์ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค. ์ด์จ๋ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ช
์ ์ ์ผ๋ก ์ค์ ํ๋ ๊ฒฝ์ฐ ํ๋ก์ ํธ ์ด๋ฆ ์ถฉ๋๋ก๋ถํฐ ๊ฐ๋ฐ์๋ฅผ ๋ณดํธ ํ ํ์๊ฐ ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ์ด๋ฅผ ์ฌ์ ์ (-p ๋๋ COMPOSE_PROJECT_NAME) ํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.์ด ๋ฐฉ๋ฒ์ ๋ณ์นญ์ด๊ฑฐ๋ .env ํ์ผ์ ๋ฃ์ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์ ์ค์ ์ ํ์ํ์ง ์์ ์ถ๊ฐ ์์ค์ ๋ณต์ก์ฑ์
๋๋ค. ๋ฒ์ ์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๊ณต์ ํ ๋ ํ์ผ ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฐ ํธ์ถ์ ๋ช
๋ น ์ค ๋งค๊ฐ ๋ณ์๋ฅผ ํฌํจํด์ผํ๋ ๊ฒ์ ์ง๋ฃจํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ .env
ํ์ผ์ _project-specific_ ๋ณ์๊ฐ ์๋ _user-specific_ ๋ณ์๋ฅผ ํฌํจํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ ์ด์์ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ฌ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
์ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ํ๋ก์ ํธ ํ์ผ์ ๋ฐ๋ํ๋ ๊ฒ์ด ์๋๋ผ์ด ๊ธฐ๋ฅ์ด ์ผ๋ถ์๊ฒ ์ ๊ทธ๋ ๊ฒ ์ค์ํ์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค. Compose ํ์ผ์ ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํด์ผํ๋ ๋ณ๋์ ๋ฌธ์ ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
docker-compose
์ ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๋ชจ๋ ๋ณ์๋ docker-compose.yml
ํ์ผ ์ธ ๋์ผํ ์์น์ ์์ด์ผํฉ๋๋ค. ํ์ฌ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ถํ์ํ๊ฒ ๋ณต์กํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ตฌ๋ ํ๋ ๊ฑฐ์ ๋ชจ๋ ์ฌ๋๋ค์ด์ด ์ ์ ๋์ํฉ๋๋ค.
docker-config.yml
์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํด๋ ํ์ฌ ๊ธฐ๋ฅ๊ณผ ์ถฉ๋ํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ตฌํํ์ง ์์ ์ด์ ๊ฐ ์์ต๋๋ค.
@ schmunk42 ๋ง์ง๋ง์ผ๋ก ํ์ธํ์ ๋ docker์์ .env ํ์ผ์ ์ด๋ฆ์ ์ ํํ ์ ์์์ต๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์ณค์ต๋๊น (๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ผ ์ก๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค). docker-compse.env์ ๊ฐ์ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ด ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์์ ๋ฉ๋๋ค. ๋ด๊ฐ ๊ฐ์ง ๋ฌธ์ ๋ .env ํ์ผ์ด ํ์ํ ๋ ๊ฐ์ง ๋งค์ฐ ์ธ๊ธฐ์๋ ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. PHP Laravel ํ๋ ์ ์ํฌ๋ ์ ์ฅ์์์ ํด๋น ํ์ผ์ ์ถ์ ํ์ง ์์ผ๋ฉฐ ํ๋ก๋์ ํ๊ฒฝ์์๋ ๋๋๋ก ์กด์ฌํ์ง ์์ต๋๋ค.
@RobIsHere๊ฐ ๋ณด์ฌ ์์์ต๋๋ค . ๋ด ๋ชจ๋ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ myapp/htdocs/docker-compose.yml
ํ์์
๋๋ค. Docker๋ฅผ ์ฑํํ ์ด๊ธฐ์๋ ์๋ํ์ง ์์ ๋ค๋ฅธ ์ปจํ
์ด๋๋ฅผ ์ค์๋ก ์ญ์ ํ์ต๋๋ค. ๋ ์ปค๊ฐ ๋ด ๊ฒฝ์ฐ ํด๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ฌด์์๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ฉด ๋ ์ข์ ๊ฒ์
๋๋ค.
Docker๋ฅผ ์ฑํํ๊ธฐ ์์ํ ๋ค๋ฅธ ์๊ฒฉ ๊ฐ๋ฐ์๊ฐ ์ฌ๋ฌ ๋ช
์์ต๋๋ค. ํ์ผ๋ก์ ๊ฐ๋ฐ์์๊ฒ ํญ์ / ๋จ์ง docker-compose up
๋ง ์ด๋ฌํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ก ์ง์ํ๋ ๊ฒ์ด ํญ์ ๋ ์ฝ์ต๋๋ค. ์ด๋ฌํ ์ผ๋ฆฌ ์ด๋ตํฐ๊ฐ Docker์ ๋ํด ๋ ์์๋ก ์ข์ต๋๋ค. ๊ทธ ๋ค์ ์จ์ ํ์ ์๊ฒ๋๋ฉด ์ค์ค๋ก ์์ ์ฐจ๋ฆด ๊ฒ์
๋๋ค.
์์ฝํ๋ฉด ์ฌ์ฉ ์ฌ๋ก๋ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ ํ์ง ์์ ๊ฒฝ์ฐ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ ์์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ฐ ๋ฉฐ ์ผ๋ฆฌ ์ด๋ตํฐ์๊ฒ ๋ช ํํ์ง ์์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด ์ ์ ํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-f
์ ์ง์ ํ์ฌ ์คํํด์ผ ํจ)-f
๋ฅผ ์ง์ ํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณ ์ ํ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค).@dnephin Docker์ ์ผ๋ฆฌ ์ด๋ตํฐ์๊ฒ ๊ฐ๋ฅํ ๊ฑธ๋ฆผ๋์ด ํ๋ ๋ ์ ์ต๋๋ค.
@dnephin ๋น์ ์ ๋ํ์ด ์ฝ๋ฉํธ ์์ ๋ค์๊ณผ ๊ฐ์ ์ฐ๋ ค๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
์๋๋ docker-compose.yml์ ์ด๋ฆ์ ๋ฃ๊ณ ์ถ์์ง๋ง ๋ ์๊ฐ ํด๋ณด๋ ๋ณ๋์ ํ์ผ์ด๋ผ๋ ์์ด๋์ด๊ฐ ์ ๋ง ๋ง์์ ๋ญ๋๋ค. ๋ณ๋์ ํ์ผ์ ์ํ๋ ๊ฒฝ์ฐ ๋ฒ์ ์ ์ด์์ ์ ์ธ ํ ์์๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค (๊ฐ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋๋กํ๋ ค๋ ๊ฒฝ์ฐ).
๋ค์๊ณผ ๊ฐ์ด ํ๋ก์ ํธ ์ด๋ฆ ํ์ธ ์ฐ์ ์์๋ฅผ ์ค์ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค (ํฐ ์ซ์๊ฐ ์์ ์ซ์๋ณด๋ค ์ฐ์ ํจ).
docker-compose.yml
COMPOSE_PROJECT_NAME
ํ๊ฒฝ ๋ณ์--project-name
๋ช
๋ น ์ค ์ต์
๋ง์ง๋ง์ผ๋ก ํ์ธํ์ ๋ docker๋ .env ํ์ผ์ ์ด๋ฆ์ ์ ํํ ์ ์์์ต๋๋ค.
@fiveanddone AFAIK ๋น์ ์ ๊ทธ๋ ๊ฒ ํ ์ ์์ง๋ง ํ๋ก์ ํธ์ ํ์ํ ENV ํ์ผ์ ์์์ผํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ์ด๋์ํฌ ์๋ ์์ต๋๋ค.
phd5 ์ ๊ฒฝ์ฐ (app) src/
๋ก ์ฎ๊ฒผ๊ณ .env
๋ ์ ์ ์ผ๋ก "control-environment-file"์
๋๋ค. ์ฌ๊ธฐ์ ์ค๋ช
ํ๋ ค๊ณ ํ์ต๋๋ค.
๋๋ ์ด๊ฒ์ ์ข์ํ์ง ์์ผ๋ฉฐ ์ค์ค๋ก ๋ณ๊ฒฝํ์ง ์์์ ๊ฒ์
๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ง์ ํ๋ก์ ํธ์์ ๊ฐ๋ฅํ์ง ์์ ์๋ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ docker-compose.yml
์ ๋์ผํ ์์ค์์๋ .env
๋ฅผ ๊ฐ๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ ์๊ฒ๋ฉ๋๋ค. ์๋ํ๋ฉด a) ๊ฑฐ๊ธฐ์ ์ํ์ง ์๋ "์ ์ด ํ๊ฒฝ"์์ ๋ณ์๋ฅผ ์ป๊ณ b) ์ด๋ฌํ ๋ณ์๋ฅผ ์ปจํ
์ด๋์ ์ ๋ฌํด์ผํ๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ c) app.env
ํ์ผ์์ ๋ ์ด์ ์ฌ์ ์ / ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
@dnephin docker-compose.env
๋ฅผ ์ ํธํ๋ env ํ์ผ๋ก ๋์
ํ๊ณ .env
๋ฅผ ํด๋ฐฑ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ฌด์์
๋๊น? fig.yml
ํ ๋ฒ ์ํํ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ๋ชจ๋ ์ฌ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. .env
ํ์ผ์ ์ด๋ฆ์ ์ ์๊ฒ ๋ค๋ฅธ ๋ฌธ์ ์ฒ๋ผ ๋๊ปด์ง๋๋ค.
๋ฌธ์ ์ ํต์ฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
docker-compose up
์ ์๋ ๋์์ธ์ ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ํด ์คํํ ์์๋ ๋จ์ผ (์งง์) ๋ช
๋ น์ด์์ต๋๋ค. ์ด๊ฒ์ด ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ์ฌ์ฉ์ ( ์ด ๊ฒฝ์ฐ )์์๋
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋ ๋ฐฉ๋ฒ์ ๋ง์ง๋ง ๋ชจ๋ ์ฌ๋์๊ฒ ์ ํฉํ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
์ฐ์ ์์ (๊ฐ์ฅ ๋์ ์์์์ ๊ฐ์ฅ ๋ฎ์ ์์๋ก)๋ ๋ค์๊ณผ ๊ฐ์์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
--project-name
(ํญ์ ์ฌ์ ์)COMPOSE_PROJECT_NAME
ํ๊ฒฝ ๋ณ์(3) .docker/project-name
ํ์ผ (OP์์ ์ ์ํ๋๋ก)์ผ๋ก ๋ฌ์ฑ ํ ์ ์์ต๋๋ค.
(4) docker-compose.yml
ํ์ผ์ ํ๋๋ก ๋ฌ์ฑ ํ ์ ์์ต๋๋ค.
์ํ๊น๊ฒ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๋ฐ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
@dnephin ์ ๊ดํ 3, ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋๋ก ํ์ฉ, ๊ทธ๊ฒ์ด env vars์ ๋ชฉ์ ์ด๋ฉฐ ํ์ผ์ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.
์ ... ๋ฌธ์ ๋ฅผ ์กฐ๊ธ ์ผ๋ฐํํ๊ณ docker-compose.yml
default_environment
์น์
์ ๊ฐ๋จํ ์๊ฐํ๋ฉด ์ด๋จ๊น์? ์ด๋ ๊ฒํ๋ฉด yaml์ ํน์ ํ๋๋ฅผ ๋์
ํ์ง ์๊ณ ๋ COMPOSE_PROJECT_NAME
๋ฅผ ์ค์ ํ ์ ์์ง๋ง ํ์ผ ์ ์ฒด์ ๋ํ๋ ์์๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ๋ณ์๋ ์ ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด .env.dist
๋ฅผ .env
๋ณต์ฌํด์ผํ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค๊ณ ์ด๋ฅผ ์์ด ๋ฒ๋ฆฌ๋ ๋น์ฉ์ด ์ค์ด ๋ญ๋๋ค.
์ฌ์ฉ ์ :
# ~/projects/sketches/sketch-42/docker/docker-compose.yml
version: "2"
default_environment:
- SUBDOMAIN=sketch-42
- ROOT_HOST=example.com
- COMPOSE_PROJECT_NAME=sketch-42
services:
web:
build:
context: ../
dockerfile: docker/Dockerfile
environment:
- VIRTUAL_HOST=${SUBDOMAIN}.${ROOT_HOST},www.${SUBDOMAIN}.${ROOT_HOST}
- VIRTUAL_PORT=80
- VIRTUAL_NETWORK=proxy
- LETSENCRYPT_HOST=${SUBDOMAIN}.${ROOT_HOST},www.${SUBDOMAIN}.${ROOT_HOST}
- LETSENCRYPT_EMAIL=admin@${ROOT_HOST}
restart: always
networks:
- proxy
networks:
proxy:
external:
name: proxy
์ด yaml์ ๋ด๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ํญ์ web
๋ผ๋ ์๋น์ค๊ฐ ์์ง๋ง ๋ฏธ๋ API ์๋ฒ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ์๋ ์ปจํ
์ด๋๋ก ๋ฐฑ์
ํ ์๋์๋ vis ์ค์ผ์น๋ฅผ ์ค๋ช
ํฉ๋๋ค. https://github.com/jwilder/nginx-proxy ๊ฐ ๋ชจ๋ ๊ฒ์ ์ ๋ฉด์ ์๊ณ ์ค์ ํฌํธ 80 ๋ฐ 443์ ์์ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
ํ์ฌ ๋ด๊ฐ ๋ก์ปฌ ์ปดํจํฐ์ ์๋ ์๊ฒฉ ์๋ฒ์ ์๋ ๊ด๊ณ์์ด .env
์ ์ ์งํ๊ณ _all_ ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธํด์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด SUBDOMAIN
์์ ๊ฒฝ์ฐ ์ปจํ
์ด๋๊ฐ ์์๋์ง๋ง ์น ์๋ฒ๋ ๊ณ์ ์์๋ฉ๋๋ค.
default_environment
์น์
์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋ก๋์
๋ณ์๋ฅผ ํ๋์ ํ์ผ์ ๋ฐฐ์น ํ ์ ์์ผ๋ฉฐ ์๋ฒ์์ .env.dist
๋ฅผ ๋ณต์ฌ ํ ํ์๊ฐ ์์ต๋๋ค. ๋ก์ปฌ ์ปดํจํฐ์์ ์์ ์์์๋ .env
๋จ์ผ ๋ณ์๋ฅผ ๋ฃ์ต๋๋ค. ROOT_HOST=example.com.dev
(๋๋ bash ํ๋กํ์์ export ROOT_HOST=example.com.dev
์๋ ์์ต๋๊น? )
์์ฝํ๋ฉด, default_environment
์น์
docker-compose.yml
๋จ์ง ์ฐ๋ฆฌ๊ฐ ํ์ฌ ๋
ผ์ํ๊ณ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋, ๋ํ 100 % BC ์ดํดํ๊ธฐ ์ฝ๊ฒํ๋ฉด์, ๋ช ๊ฐ์ง ์ถ๊ฐ ๋ฉ์ง ํธ๋ฆญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค!
์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
์ข์ ๊ฒ ๊ฐ์ง๋ง ์ผ๋ถ ์๋๋ฆฌ์ค์์ ์ ์ฉ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ (๋จ๊ฑฐ์ด) ๋
ผ์์ ๋น์ถ์ด ๋ณผ ๋
์๋ฃจ์
์ ๋๋ต ๋ค์๊ณผ ๊ฐ์ด ๋ฒ์ญ๋ฉ๋๋ค.โ์ ํ์ผ์ ์ถ๊ฐํ๋ ๋์
yml, ์ ์น์
์ ์ถ๊ฐํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?โ :)
2017 ๋
2 ์ 28 ์ผ ํ์์ผ 00:02 Alexander Kachkaev [email protected]
์ผ๋ค :
ํ ... ๋ฌธ์ ๋ฅผ ์กฐ๊ธ ์ผ๋ฐํํ๊ณ ๊ฐ๋จํ ์๊ฐํ๋ฉด
docker-compose.yml์ default_env ์น์ . ์ด๋ฐ ์์ผ๋ก ์ฐ๋ฆฌ๋
yaml์ ํน์ ํ๋๋ฅผ ๋์ ํ์ง ์๊ณ COMPOSE_PROJECT_NAME
๋ํ ๋ค๋ฅธ ๊ธฐ๋ณธ ๋ณ์๋ฅผ ์ ์ ํ ์ ์์ต๋๋ค.
ํ์ผ ์ ์ฒด์ ์กด์ฌํฉ๋๋ค. ์ด๊ฒ์ ์ผ์ด์ค์ ์๋ฅผ ์ค์ผ ๊ฒ์ ๋๋ค
.env.dist๋ฅผ .env๋ก ๋ณต์ฌํด์ผ ํ ๋์ ์์ด ๋ฒ๋ฆฌ๋ ๋น์ฉ
๊ทธ๋ ๊ฒํ๋ ๊ฒ์ ๋ ์ ์ ๊ฒ์ ๋๋ค.์ฌ์ฉ ์ :
~ / projects / sketches / sketch-42 / docker / docker-compose.yml
๋ฒ์ : "2"
default_env :
SUBDOMAIN = sketch-42
ROOT_HOST = example.com
COMPOSE_PROJECT_NAME = sketch-42
์๋น์ค:
ํธ๋ฌผ:
์ง๋ค:
์ปจํ ์คํธ : ../
dockerfile : docker / Dockerfile
ํ๊ฒฝ:
-VIRTUAL_HOST = $ {SUBDOMAIN}. $ {ROOT_HOST}, www. $ {SUBDOMAIN}. $ {ROOT_HOST}
-VIRTUAL_PORT = 80
-VIRTUAL_NETWORK = ํ๋ก์
-LETSENCRYPT_HOST = $ {SUBDOMAIN}. $ {ROOT_HOST}, www. $ {SUBDOMAIN}. $ {ROOT_HOST}
-LETSENCRYPT_EMAIL = admin @ $ {ROOT_HOST}
๋ค์ ์์ : ํญ์
๋คํธ์ํฌ :
-ํ๋ก์๋คํธ์ํฌ :
๋๋ฆฌ:
์ธ๋ถ:
์ด๋ฆ : ํ๋ก์์ด yaml์ ์ ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
์ค์ผ์น๋ ํญ์ ์น์ด๋ผ๋ ์๋น์ค๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ๋ฐฑ์ ํ ์๋ ์์ต๋๋ค.
๋ฏธ๋ API ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ์๋ ์ปจํ ์ด๋์ ์ํด. ๊ฐ์ ํฉ๋๋ค
https://github.com/jwilder/nginx-proxy ๊ฐ ์ ๋ฉด์ ์์ ์ฒญ์ทจํฉ๋๋ค.
์ค์ ํฌํธ 80 ๋ฐ 443์.ํ์ฌ ๋ด๊ฐ ๋ก์ปฌ ์ปดํจํฐ์ ์๋ ์๊ฒฉ ์๋ฒ์ ์๋ ์๊ด์์ด
.env๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ๋ชจ๋
ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋ฉ๋๋ค. ๋ง์ฝ ๋ด๊ฐ ์์๋ค๋ฉด
SUBDOMAIN, ์ปจํ ์ด๋๊ฐ ์์๋์ง๋ง ์น ์๋ฒ๋ ์ค๋จ ๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.๋ด ๋ง์๋๋ก default_env ์น์ ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋ก๋์ ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ณ์๋ฅผ ๋ฐฐ์นํ๊ณ ์๋ฒ์ .env.dist๋ฅผ ๋ณต์ฌ ํ ํ์๊ฐ ์์ต๋๋ค.
๋ก์ปฌ ์ปดํจํฐ์์ ๋๋ ๋จ์ง ํ๋์ ๋ณ์๋ฅผ .env์ ๋ฃ์ ๊ฒ์ ๋๋ค.
ROOT_HOST = example.com.dev (๋๋
bash ํ๋กํ์ ROOT_HOST = example.com.dev?)์์ฝํ์๋ฉด docker-compose.yml์ default_env ์น์ ์
์ง๊ธ ๋ ผ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง ๋ช ๊ฐ์ง ๋ ์ข์ ์ฌ์ฉ์ ๊ฐ๋ฅํ๊ฒ ํ ์๋ ์์ต๋๋ค.
์๋๋ฆฌ์ค!์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
โ
์ด ์ค๋ ๋๋ฅผ ๊ตฌ๋ ํ๊ธฐ ๋๋ฌธ์์ด ๋ฉ์์ง๊ฐ ์ ์ก๋์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/745#issuecomment-282885661 ๋๋ ์์๊ฑฐ
์ค
https://github.com/notifications/unsubscribe-auth/AAQJJZumr10j3i17gPxrSyA-n8CwvsXTks5rg1X_gaJpZM4DLBNs
.
docker-compose.yml ์์ "project_name"์ด ์์ผ๋ฉด ์คํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํ์คํ ๋ ํธ๋ฆฌ๊ฐ์๋ ๋ชจ๋๋ฆฌ์ค ์ ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
projectA/infrastructure/docker-compose.yml
projectB/infrastructure/docker-compose.yml
...
์ค์ ์ธ๊ณ์์๋ณด๋ค ๋ถ๋ช ํ ๋ ๋ณต์กํ๋ฏ๋ก docker-compose.yml ํ์ผ์ "projectA / projectB"ํด๋๋ก ์ฎ๊ธธ ์๋ ์์ต๋๋ค.
๋ถํ ํ ํ๋ก์ ํธ๋ฅผ ๋ฌป๋ CLI๊ฐ ๋ฃจํธ์ ์์ผ๋ฉฐ ํ๋ก์ ํธ ์ด๋ฆ์ด docker_compose.yml์ ์์ ํด๋์ ์ง์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ถฉ๋์ ์ง๋ฉด ํด ์์ต๋๋ค.
docker-compose ๋ช
๋ น (CLI ์คํฌ๋ฆฝํธ์ ํฌํจ)์ ์ง์ ์์ฑํ์ง ์์ผ๋ฏ๋ก "-p"์ธ์๋ฅผ ๋ช
๋ น์ ์๋์ผ๋ก ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ฅผ์ํ ํด๊ฒฐ์ฑ
์ ํญ์ CLI ์คํฌ๋ฆฝํธ ๋ด์์ project_name์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ absolute_path๋ฅผ ๊ธฐ๋ฐ์ผ๋ก docker-compose๋ฅผ ํธ์ถ ํ ๋ ํญ์ "-p"๋ฅผ ๊ฐ์ง์ง ๋ง ์ด์ํ๊ฒ ๋ค๋ฆฝ๋๋ค.
์ฌ๊ธฐ์์๋ ์ด๋ค ์ฌ๋์ "๋๋ถ๋ถ์ ํ๋ก์ ํธ์์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๋ํฉ๋๋ค. docker-compose.yml์ ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์ ์์ผ๋ฉฐ ํ๋ก์ ํธ์ ์ด๋ฆ์ด ๋ค๋ฅด๋ฏ๋ก ์ถฉ๋์ ํผํ ์ ์์ต๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค. ์ ๋ ๋์ ํ ์ ์์ต๋๋ค. ์ด. ํญ์ ๋ฃจํธ ํด๋ ์์์๋ ๊ฒ์ ์๋๋๋ค.
์๋น์ค์ ๋ํ docker-compose.yml ํ์ผ (ํ์ฅ ๋นํ์ฑํ)์์ "container_name"์ ์ ์ ํ ์ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์์ค์์ docker-compose.yml ํ์ผ ์์ฒด์ ๋ํด "project_name"์ ์ ์ ํ ์์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? "version"/ "services"/ "networks"/ "volumes"?
scale
์ฌ์ฉํ๋ฉด ์ปจํ
์ด๋ ์ด๋ฆ์ด ๋ช
ํ ํด์ง๋๋ค. (์ : <project_name>_<container_name>_1
).
์ด๋ DNS์ ์ปจํ ์ด๋ ์ด๋ฆ์ ์ฌ์ฉํ ๋ ๋์์ด๋ฉ๋๋ค.
์ด๊ฒ์ด ์๋ฃ๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ์ฌ๊ธฐ์ ์์ต๋๋ค. ์ค๋งํ๋ค. 3 ๋ ์ด์
์, Docker์ ๊ฐ์ฅ ์ด๋ฆฌ์์ ์ฌ์ฉ์ฑ ๋ฌธ์ ์ค ํ๋์ด๋ฉฐ ์์ ๋์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์๋ค๊ณผ ๊ทธ๊ฒ์ ๋ํด ๋ ผ์ํ๋ ๋ฐ ๋๋ฌด ๋ง์ ์๊ฐ์ ๋ณด๋๊ณ , ํฉ์๊ฐ ์์์ง๋ง ๊ทธ๊ฒ์ด ๋์ ๋์์ธ์ด๋ผ๋ ์ธ์ ์ ์์์ต๋๋ค.
์ด์ ๋ํ ๋ช ๋ฐฑํ ์ฌ์ฉ์ ์ง์์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ง ์ค๋ฝ์ง๋ง ๊ฐ๋ฐ์ ์์ ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋งค๋ ๋ค์ ํด์ํ๊ณ ์์ต๋๋ค.
cli๋ฅผ ์ฌ์ฉํ์ฌ ์ต์
์ ์ถ๊ฐํด์ผํ๋ ๊ฒฝ์ฐ docker-compose์ ์์ ์ ๋ฌด์์
๋๊น?
๋ช
๋ช
์ฒด๊ณ ๋๋ถ์ ์ผ๋ถ ์ปจํ
์ด๋๋ฅผ ๋ฎ์ด ์ผ์ต๋๋ค.
์ค๋ ๋๋ ๋ ๋ค๋ฅธ docker-compose
ํ๋ก์ ํธ๋ฅผ ๋ ๋ค๋ฅธ .env
ํ์ผ๋ก ์ค์ ํ์ฌ ํ๋ก์ ํธ์ ์๊ตฌ ์ด๋ฆ์ ๋ถ์ฌํ์ต๋๋ค. ๊ทธ๋์ ๋ง์ง๋ง์ผ๋ก ํ์ธํ ์ง ๋ช ๋
์ด ์ง๋ฌ๊ธฐ ๋๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ํ์ธํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ๋ด๊ฐ ๋ณผ ์์๋ ํ ์ฌ๊ธฐ์ ์๋ก์ด ๊ฒ์ ์์ต๋๊น? .env
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณ์ ์ฌ์ฉํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ๋์๊ฒ yaml ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์์ง ํด๊ฒฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ดํดํ ์์๋ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ธ๋ถ ์ ์ผ๋ก (๋ช
๋ น ์ค ๋๋ ๋ณ์๋ก) ์ง์ ํด์ผํ์ง๋ง docker-compose.yml
ํ์ผ (๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ ๋์ ์ผ๋ก ์ง์ ํ๋ ํ์ผ)์์ ์ค์ ํ ์ ์๋ค๋ ๊ฒ์ ๋ฌด์๋ฏธํฉ๋๋ค. ๋ถ๋ชจ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ, ์
ธ ํ๊ฒฝ ๋๋ ํน์ .env
ํน์ ์ค์ ์กด์ฌ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํ๋ก์ธ์ค๊ฐ ์์์ docker-compose.yml
ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ์๋น์ค ์คํ์ ์ฒ๋ฆฌํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ด ์์ต๋๋ค .env
ํ์ผ. ๋ด CI ์์
์ด ํ๋ก์ ํธ ์ด๋ฆ์ด ๋ฌด์์ด์ด์ผํ๋์ง ์ง์์ ์ผ๋ก "๊ณ์ฐ"ํด์ผํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. docker-compose.yml
๋ช
ํํ๊ฒ ๋ช
์ํด์ผ ๋ด ์์
์์ ์ถ์ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๊ฒ์์ด ํ๋ก์ ํธ์์ ๋ช ๋ฒ์ด๊ณ ๋ฐ๋ณต๋๋ ๊ฒ ๊ฐ์ต๋๋ค. Docker๋ ํ๋ฅญํ ๊ธฐ์ ์ด์ง๋ง ๋๋ก๋ ๊ฐ๋ฐ์๊ฐ ์ค์ ๋ก ์ค์ ๊ฒฝํ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์๋๋ฉด ๋ชจ๋๊ฐ ๊ฐ์ฅ ์ ์๋ค๊ณ ์๊ฐํ๋ 18 ์ธ ํด์ปค์ผ๊น์? ์ฌ๋๋ค์์ด ๋๊ตฌ๋ฅผ ์ค์ ์์ ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๋ฉฐ ์ง์์ ์ผ๋ก ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฐ ์๊ฐ์ ์๋นํ์ง ์์ต๋๋ค.
๋ด ์๊ฐ์ ํ์์ด ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๊ณ ์์ต๋๋ค. Docker ๊ฐ๋ฐ์๋ฅผ ์ค๋ํ๋ ๊ฒ์ ๊ฐ๋ณ๊ฒ ๋๋ ๊ฒ์ด ์ ๋ง ๊ณ ํต ์ค๋ฌ์ธ ์ ์์ต๋๋ค.
๋ช ํํ ์ฃผ์ฅ์ ๊ทธ๋ค์ง ๋ง์ด๋์ง ์๋ ์ด์ํ ๋ ผ๋ฆฌ๋ก ๋ฐ๋ฐ๋ฉ๋๋ค. ๋ชจ๋ ๊ฐ์ ์ด์ ๋ก ์ฌ๊ธฐ์ ์จ ์ค์ ์ฌ์ฉ์์ ์๊ฒฌ์ ๋ฌด์๋ฉ๋๋ค. ๋ถ๋๋ฌ์ด ์ผ์ ๋๋ค.
๋ด CI ์์ ์ด ํ๋ก์ ํธ ์ด๋ฆ์ด ๋ฌด์์ด์ด์ผํ๋์ง ๊ณ์ "์์ ๋ด์ผ"ํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ๋ด ์์ ์์ ์ถ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก docker-compose.yml์ ๋ช ํํ๊ฒ ๋ช ์ํด์ผํฉ๋๋ค.
์คํ์ ์ด๋ฆ์ด "build1234"์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ docker exec build1234_myservice script.sh
์ ๊ฐ์ ๋ค๋ฅธ ์์น์์ ์คํ ์ด๋ฆ์ ์ด๋ป๊ฒ ์ฌ์ฉ ํ์๊ฒ ์ต๋๊น?
์ด๋ค ์ ์ค ์ผ์ด์ค์๋ ๋ง์ง ์์ ์๋ ์์ง๋ง ...
์ค์ ์์ (๋ณต์ ) ํ๋ก์ ํธ๋ฅผ ์ค์ ํ ๋ .env
ํ์ผ ๋ง ๋ณ๊ฒฝํฉ๋๋ค. ๋ณ๊ฒฝ์ด๋ ๋์ ๊ตฌ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ docker-compose.yml
.env
๋ณ์๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ฅ์ ์ ๋ณ์๊ฐ ๋๋ฝ ๋ ๊ฒฝ์ฐ docker-compose๊ฐ ๊ฒฝ๊ณ (๋๋ ์คํจ)ํ๋ค๋ ๊ฒ์
๋๋ค.
์ด ๋ฌธ์ ๋ก ์ธํด ์ง์ฆ์ด ๋ฌ๊ธฐ ๋๋ฌธ์ ์ํฌ ํ๋ก๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ค๊ณ ๋งํ๊ณ ์ถ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก docker-compose.yml
๋ํ ๋ณ๊ฒฝ์ ์์ค ์ฝ๋์ ๋ํ ๋ณ๊ฒฝ๊ณผ ๋น์ทํ์ง๋ง .env
๋ ๊ตฌ์ฑ ๋ง ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ํ docker-compose.yml
์ ํ๋ก์ ํธ ์์กด๋๊ฐ ๋์ network
์ ๊ฐ์ ๋ช ๊ฐ์ง ์ต์
์ด ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์์ ๋ด์ฉ์ผ๋ก ๋์๊ฐ๋๋ค. ๋คํธ์ํฌ์ ๋ํด .env
๋ณ์๋ฅผ ์ ์ํ๊ฒ ์ต๋๋ค. ๐ค
์ด ๋ฌธ์ ๋ก ์ธํด ์ง์ฆ์ด ๋ฌ๊ธฐ ๋๋ฌธ์ ์ํฌ ํ๋ก๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ค๊ณ ๋งํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋๋ ๋ด ์ํฉ์ ๋ํด ์ข ๋ ์๊ฐํ๋ค. ์ค์ ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ธ๋ถ ์ ์ผ๋ก ์ค์ ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ค์ ๋ก -p <project_name>
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ์ด ์์
์ ์ํํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด CI์์ ์คํ์ ๊ณ ์ ํ ์ธ์คํด์ค๋ฅผ ๊ฒฉ๋ฆฌํ๊ณ ์ฌ๋ฌ ์คํ์ ๋์์ ์คํํ ์ ์์ต๋๋ค. ํ์ํ. ํด๋น CI ์ฒด์ธ ๋ง ํด๋น ํ๋ก์ ํธ ์ด๋ฆ์ ์์์ผ ์๋ ์์ฑ๋๊ฑฐ๋ ์์ (์๋ ค์ง), ๋ฌธ์ ์์ต๋๋ค. ๋ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ์ด๋ฆ์ ์ฌ์ ์ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ง๋ง .env
ํธ๋ฆญ์ด ๋ช
ํํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ๋ก์ ํธ์ _default name_์ ์ด๋๊ฐ์ ๋ช
์ ์ ์ผ๋ก ์ ์ํ๋ ๊ฒ์ด ์ ์ฉํ ๋ค๋ฅธ ์ํฉ์ด ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ๋ถ๋ชจ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์์ด ์ด๋ฆ์ ์์ค๋ก ์ฌ์ฉํฉ๋๊น? ๊ทธ๊ฒ์ ๋์๊ฒ์์ด์ ์ฝ์ ์ด๋ค. ์ด๋์์๋ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์์ ๋๋ ํ ๋ฆฌ์ ์ ํ์ ๋ณ๋ค๋ฅธ ์ด์ ์์ด ์์์ ์ผ๋ก ๋ณด์
๋๋ค (์ : ๊ฑฐ์ ๋ชจ๋ ํ๋ก์ ํธ์์ docker-compose.yml
ํ์ผ์ docker
๋ผ๋ ํ์ ๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค). ๋ฐ๋ผ์ ์์์ ์ผ ๊ฒฝ์ฐ, ๋ง์ ๊ฒฝ์ฐ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ๊ณผ ์์ ํ ๋
๋ฆฝ์ ์ด์ด์ผํ๋ ๋ถ๋ชจ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ํฅ์ ๋ฏธ์ณ ์ธ๋ถ ๋ถ์์ฉ์ ์์ฑํ๋ ๋์ yml ํ์ผ๊ณผ ๊ฐ์ด ๋ ๋ช
ํํ ๊ณณ์ ์ ์ฅํ์ญ์์ค (์ฐ๋ ๊ธฐ์ค). ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ก ์์
ํ ๊ฒฝํ).
์ด๋์์๋ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ถ๋ชจ ๋๋ ํ ๋ฆฌ์ ์ ํ์ ๋ณ๋ค๋ฅธ ์ด์ ์์ด ์์์ ์ผ๋ก ๋ณด์ ๋๋ค (์ : ๊ฑฐ์ ๋ชจ๋ ํ๋ก์ ํธ์์ docker-compose.yml ํ์ผ์ docker๋ผ๋ ํ์ ๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค).
์์์ ID๊ฐ ์๋ ๋ค๋ฅธ ๊ฒ์ด ํ์ํ๋ฉด ๋ถ๋ชจ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ค์ ๋์์ด ์์ต๋๋ค. ์ ์ด๋ ์คํ์ด "์๋"๋ ์์น๋ฅผ ์ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ ํ๋ก์ ํธ์์๋ .env
ํ์ผ ์์ด๋ ์๋ก ์ถฉ๋ ํ ์์๋ tests
ํด๋์ ํ
์คํธ ์คํ์ด ์์ผ๋ฏ๋ก ๋์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ํจ์ฌ ๋ ๋ช
ํํ IMHO ํ์ผ ์ธ docker-compose.env
๋ฅผ ์ ํธํ๋ ์ด์ ์
๋๋ค.
๋น์ ์ด ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ ๊ฒ์ ์ธ์ ํ๊ณ ๊ทธ๋ฅ์ด ๋ฒ๊ทธ๋ฅผ ๋ซ์ผ์๊ฒ ์ต๋๊น, ์๋๋ฉด ์ฐ๋ฆฌ ๋๋ค์๊ฐ ์ํ๋ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ๊ฐ๋จํ ๊ฒ์ ๊ตฌํ ํ์๊ฒ ์ต๋๊น? 2.86 ๋ ํ์ ๋๋ค. ๋๋น์์ ๋ด๋ ค. ์์ ์ ๊ฒฐ์ ์ ์์ ํ๊ฑฐ๋ ์ค์๋ฅผ ์์ ํ์ญ์์ค. ๊ทธ๋ฌ๋ ๋น์ ์ ๊ทธ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค. ์๋ฌด๊ฒ๋ํ์ง ์๋ ๊ฒ ์ด์์ํ์ญ์์ค.
@matsaman ๊ณผ ๊ทธ์ ๋๊ธ์ ์์ง ์๊ฐ๋ฝ์ ์ฌ๋ฆฌ๋ ๋ชจ๋ ์ฌ๋๋ค :
๋น์ ์ด ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ ๊ฒ์ ์ธ์ ํ๊ณ ๊ทธ๋ฅ์ด ๋ฒ๊ทธ๋ฅผ ๋ซ์ผ์๊ฒ ์ต๋๊น, ์๋๋ฉด ์ฐ๋ฆฌ ๋๋ค์๊ฐ ์ํ๋ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ๊ฐ๋จํ ๊ฒ์ ๊ตฌํ ํ์๊ฒ ์ต๋๊น? 2.86 ๋ ํ์ ๋๋ค. ๋๋น์์ ๋ด๋ ค. ์์ ์ ๊ฒฐ์ ์ ์์ ํ๊ฑฐ๋ ์ค์๋ฅผ ์์ ํ์ญ์์ค. ๊ทธ๋ฌ๋ ๋น์ ์ ๊ทธ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค. ์๋ฌด๊ฒ๋ํ์ง ์๋ ๊ฒ ์ด์์ํ์ญ์์ค.
"๋ํฌ๋ค"์ ๋๊ตฌ์ผ? ์คํ ์์ค์์ ์ปค๋ฎค๋ํฐ๋ ๊ฒฐ์ ์ ์์ ํ๊ณ ๋ค๋ฅธ ์ฌ๋์ ์ค์๋ฅผ ์์ ํฉ๋๋ค. Docker๋ ์คํ ์์ค์ ๋๋ค. ์ง์ง ๋๋ ๋์ ํ ๋ฆฌํ์คํธ ์ ์ถ์ ๊ณ ๋ คํ์ญ์์ค.
๋๋ ์ด๊ฒ์ด ์์ง ๊ตฌํ๋์ง ์์ ๊ฒ์ด ์ฌํ๋ค. ๊ทธ๋ฌ๋ ์คํ ์์ค์์ ์ฐ๋ฆฌ๋ ๊ธฐ์ฌํ๊ฑฐ๋ ์ฐธ์์ฑ์๊ฒ ๊ธฐ๋ค๋ฆฝ๋๋ค.
$ cd foo
$ docker-compose up
$ docker-compose -p bar up
... some time later wanting to take down bar forgetting '-p'
$ docker-compose down
Stopping foo_nginx_1 ... done
Stopping foo_mysql_1 ... done
Removing foo_nginx_1 ... done
Removing foo_mysql_1 ... done
$ FU@$_!@*#%$(!_*@
-bash: FU@!@*#%$: command not found
๋ถํฉ๊ฒฉ.
$ cd foo
$ source foo.env
$ docker-compose up
$ source bar.env
$ docker-compose up
... some time later wanting to take down foo forgetting to `source .foo.env`
$ docker-compose down
Stopping bar_nginx_1 ... done
Stopping bar_mysql_1 ... done
Removing bar_nginx_1 ... done
Removing bar_mysql_1 ... done
$ FU@$_!@*#%$(!_*@
-bash: FU@!@*#%$: command not found
๋ถํฉ๊ฒฉ.
$ cd foo
$ docker-compose -f foo.yml up
$ docker-compose -f bar.yml up
... some time later
$ docker-compose down
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml
์์ด!
$ COMPOSE_PROJECT_NAME=foo docker-compose up -d
$ COMPOSE_PROJECT_NAME=bar docker-compose up -d
... some time later
$ docker-compose down -v
Removing network project_default
WARNING: Network project_default not found.
์ํ/
"๋ํฌ๋ค"์ ๋๊ตฌ์ผ?
@benjaminwood ์ด ํ๋ก์ ํธ์ ๊ด๋ฆฌ์์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ณต์กํ ๋ณํ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๊ณ ์๋ฌด๋ ๊ทธ๊ฒ์ ํ ์๊ฐ์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ๋น์ ์ ์ฃผ์ฅ์ ์๋ฏธ๊ฐ์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ์ฌ๊ธฐ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ ๋งค์ฐ ๋ช ๋ฐฑํฉ๋๋ค. ์ฝ๋๋ฒ ์ด์ค์ ์ต์ํ ์ฌ๋๋ค์๊ฒ๋ ๊ตฌํ์ด ๋งค์ฐ ์ฌ์ธ ๊ฒ์ด๊ณ ์ธ๋ถ์ ๋๊ตฐ๊ฐ์๊ฒ๋ ํจ์ฌ ๋ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์๋ฌด๋ ํ ์๊ฐ์ด ์๋ค๋ ๊ฒ์ด ์๋๋ผ ๊ด๋ฆฌ์๊ฐ ๊ทธ๊ฒ์ ์ํ์ง ์๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์์ด ๋ฌธ์ ๊ฐ ์ง๊ธ ์ด๋ ค ์๊ณ : +1 : ์ฌ๊ธฐ์ ์ง๋์ ๊ณ ๋ คํ ๋ ์ฌ๊ธฐ ์ํฌํฐ๋ค์ด ๊ทน๋๋ก ํ์์ ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ช ๋ฒ์ด๊ณ ๊ฒ์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ ์๋ ค์ ธ ์์ง๋ง ๋ชจ๋ ์ฌ๋์๊ฒ ์ ์ฉ๋์ง๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ฌ์ ํ docker-compose.yml
์ ๊ธฐ๋ฅ์์ ๊ฑฐ์ ํ๋ก์ ํธ ์ด๋ฆ ๋ง ์๋ต ๋ ์ด์ ์ ๋ํ ๋ต์ ์ฐพ์ ์ ์์ต๋๋ค. ๋๊ตฐ๊ฐ ์๊ฐํ๋ฉด ๊ฑฐ๊ธฐ์ ์ํ์ง ์๊ณ ๊ทธ๋ฅ ์ฌ์ฉํ์ง ๋ง์ญ์์ค! ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ํ ์๊ตฌ๊ฐ ๋๋ฌด๋๋ ๋ช
๋ฐฑํ๋ค๋ฉด ๋ค๋ฅธ ์ฌ๋์ ๋ํ ๋น์ ์ ์๊ฒฌ์ ๋ฐฉํดํ์ง ๋ง์ญ์์ค.
์ด๊ฒ์ ๋ค๋ฅธ ์ง์ ์์ ๋ด ์๋ค.
docker-compose.yml
ํ์ผ์ด์๋ ํด๋์์๋ ๊ฒฝ์ฐ ์คํ์์๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
์๋นํ ๊ธฐ๋ณธ์ ์ธ ์ง๋ฌธ์ด์ง๋ง ์ด์ ๋ํ ์ฌ์ด ๋๋ต์ ์์ต๋๋ค.
ํ์ฌ (์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌ) :
-p
์ ๊ฐ์นCOMPOSE_PROJECT_NAME
์ ๊ฐ์น.env
ํ์ผ์ COMPOSE_PROJECT_NAME
๊ฐ์ ๋ง์ ์นํธ์๊ฐ๋๊ธฐ ์ํด ์ด๋ฏธ ํผ๋์ค๋ฌ์ด ์ค์ ์ 5 ๋ฒ์งธ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ทธ ๊ฒฐ์ ์๋ ๋ถ๊ตฌํ๊ณ ํ์ฌ ์ด๋ฆ์ ๋ํ "๋๋ผ์ด ๋ฐ ๊ฐ๋ฅํ"์ ๋ณด๊ฐ ์์ด์ผํฉ๋๋ค. docker-compose config
๋์๊ณ ์คํ์ด ์คํ ์ค์ด ์๋๋ฉด docker-compose ps
๋ ์์ต๋๋ค.
์๋ง๋ docker-compose create
์ด ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์์ ์ต์
์ด์ง๋ง ์๋ฒฝํ์ง๋ ์์ต๋๋ค.
์ต์ํ docker-compose config --project-name
์ ๊ฐ์ ๊ฒ์ด ์์ด์ผํฉ๋๋ค. ํ์ฌ ์์ ์์น๋ฅผ โโ์๊ณ ์ฌ๋ฐ๋ฅธ ์์๋ก ํ์ธํด์ผํฉ๋๋ค.
docker-compose.yml ํ์ผ์ด์๋ ํด๋์์๋ ๊ฒฝ์ฐ ์คํ์์๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
๋ค์ ๋งํ์ง๋ง, ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด ์ฌ์ฉํ์ง ๋ง์ญ์์ค! ์๋ฃจ์ ์ ๋ง์กฑํ๋ค๋ฉด- ๋น์ ์๊ฒ ์ข์ต๋๋ค !! ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก ์ ํ ํผ๋ํ์ง ์์ ๊ฒ์ ๋๋ค!
๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฌ๋์ด ๋ค๋ฅธ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ๋ฐ์ ๋ค์ผ ์ ์์ต๋๊น? ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋ฝ ๋์ด ์กฐ๊ฐ์ด ๋ง์นจ๋ด ์ถ๊ฐ๋๋ ๊ฒ์ ๋๋ค.
์ ๋ง์ ์นํธ์๊ฐ๋๊ธฐ ์ํด ์ด๋ฏธ ํผ๋์ค๋ฌ์ด ์ค์ ์ 5 ๋ฒ์งธ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
ํผ๋ ์ค๋ฌ์ธ ์์๋ ์ ์ผํ ์ด์ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ์ฒ์์ docker-compose.yml
์์ ์ ์ธ ๋์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ด ์ง๊ธ ๊ทธ ํ์ผ์์์ ๊ฒ์
๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ์ฐ์ ์์ ๋ชฉ๋ก์ ์ ์ ํ ์ ์์ต๋๋ค.
ํ์ฌ ์์ ์์น๋ฅผ โโ์๊ณ ์ฌ๋ฐ๋ฅธ ์์๋ก ํ์ธํด์ผํฉ๋๋ค.
ํ๋ก์ ํธ์ ๋์ปค ์ด๋ฆ์ ๋ชจ๋ฅด๊ณ ์ ๊ทธ๊ฒ์ด ๋น์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๋น์ ์ ๋๋ฌด ํผ๋์ค๋ฝ๊ฒ ๋ง๋ ๋ค๋ฉด ์ ๋น์ ์ ๋ชจ๋ ํ๋ก์ ํธ์์ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ง ์์ต๋๊น?
๋ค์ ๋งํ์ง๋ง, ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด ์ฌ์ฉํ์ง ๋ง์ญ์์ค! ์๋ฃจ์ ์ด ๋ง์กฑ ์ค๋ฌ์ฐ๋ฉด-์ข์ต๋๋ค !! ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก ์ ํ ํผ๋ํ์ง ์์ ๊ฒ์ ๋๋ค!
๋ด ์ง๋ฌธ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ docker-compose
์์ ํน์ ์ปจํ
์ด๋ ์งํฉ์ ์์ ๋ฐ ์ค์งํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ ์ผํ ๊ด๋ จ ์ ๋ณด์
๋๋ค.
์ด ์ค๋ ๋์ ์ฌ๋๋ค์ ํ๋ก์ ํธ ์ด๋ฆ ์ด ์คํ์
๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฌ๋์ด ๋ค๋ฅธ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ๋ฐ์ ๋ค์ผ ์ ์์ต๋๊น? ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋ฝ ๋์ด ์กฐ๊ฐ์ด ๋ง์นจ๋ด ์ถ๊ฐ๋๋ ๊ฒ์ ๋๋ค.
์ด ์ฌ๋๋ค์ ์ถ๊ฐํ๋ฉด ์ฌ์ ์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์คํ์ ์ผ๋ถ ์ด๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์ปจํ ์ด๋๋ฅผ ์ฃฝ์ด๋ ๊ฒ์ ๋ํด ๋ถํ ํ ๊ฒ์ ๋๋ค.
ํผ๋ ์ค๋ฌ์ธ ์์๋ ์ ์ผํ ์ด์ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ์ฒ์์ docker-compose.yml์์ ์ ์ธ ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ด ์ง๊ธ ๊ทธ ํ์ผ์์์ ๊ฒ์ ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ์ฐ์ ์์ ๋ชฉ๋ก์ ์ ์ ํ ์ ์์ต๋๋ค.
์ค์ ๋ก BC ๋ฐฉ์์์๋ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ๋๋ ํ ๋ฆฌ ์ด๋ฆ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์์ผํ๋ฏ๋ก ์ธ๋ชจ ์๊ฒ๋ฉ๋๋ค. ๊ทธ๊ฒ์ด ์ ๊ฐ "ํ๋ก์ ํธ ์ด๋ฆ์ ์ป๋ ๋ฐฉ๋ฒ"์ ๋ฌป๋ ์ด์ ์ ๋๋ค.
ํ๋ก์ ํธ์ ๋์ปค ์ด๋ฆ์ ๋ชจ๋ฅด๊ณ ์ ๊ทธ๊ฒ์ด ๋น์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๊น?
์ผ๋ฐ์ ์ผ๋ก ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ์ง๋ง .env
์ ์ฌ์ฉ์ ์ง์ ๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ ์ด๋ฆ์ด ์์
์ด ์คํ๋๋ ์ปจํ
์ด๋๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ ๊ด๋ จ์ด ์์ต๋๋ค.
cd /some/path/test
docker-compose up -d
cd /a-completely-different-path
docker-compose -p test down -v --remove-orphans
์ด๊ฒ์ ์ฒซ ๋ฒ์งธ ์คํ์ ์ฃฝ์ด๊ณ yml
ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ๋์ผํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๋น์ ์ ๋๋ฌด ํผ๋์ค๋ฝ๊ฒ ๋ง๋ ๋ค๋ฉด ์ ๋น์ ์ ๋ชจ๋ ํ๋ก์ ํธ์์ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ง ์์ต๋๊น?
์ ๋ ๊ธฐ๋ณธ docker-compose
๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๊ด์ฐฎ์ง ๋ง ์ด๋ฆ์ ๋ณ๊ฒฝํด์ผํ์ง๋ง ๋์ผํ ์ปจํ
์ด๋ ์ธํธ๋ก ๊ณ์ ์์
ํ๋ ค๋ฉด .env
ํ์ผ์ ์ถ๊ฐํฉ๋๋ค.
์ด ์ฌ๋๋ค์ ์ถ๊ฐํ๋ฉด ์ฌ์ ์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์คํ์ ์ผ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์ปจํ ์ด๋๋ฅผ ์ฃฝ์ด๋ ๊ฒ์ ๋ํด ๋ถํ ํ ๊ฒ์ ๋๋ค.
๋ง์ด ์ ๋ผ. ๋๊ตฐ๊ฐ docker-compose.yml
ํ๋ก์ ํธ ์ด๋ฆ์ ์ถ๊ฐํ์ง ์์ผ๋ฉด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ์ถ๊ฐํ๋ฉด ๊ทธ๊ฒ์ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค! ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์๋ฌด๋ ์ถ๊ฐํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒํ๋๋ผ๋ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ์ฌ๊ธฐ์ ์ด๋ค ๋ฌธ์ ๋ฅผ ๊ตฌ์ฑํ๋ ค๊ณ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋น์ ์ ์ผ์ ์ง๋์น๊ฒ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ์์ต๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ๊ตฌ์ฑ ํ ์์๋ ๋ชจ๋ ์ต์ ์ ํผํฉํ๋ฉด ์ด๊ฒ์ด ๋ฌธ์ ๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ ๊ฒํด์๋ ์๋ฉ๋๋ค.
ํ ๋๋ ํ ๋ฆฌ์ ์ฌ๋ฌ ๊ฐ์ ๋ช ๋ช ๋ compose ํ์ผ์ด ์์ผ๋ฉด ์ฐ์ ์์ ํธ๋ฆฌ์ 4 ๊ฐ ์ต์ ์ค 3 ๊ฐ๋ ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ์ฌ์ ํ .env ํ์ผ์ ๊ณต์ ํ๋ฏ๋ก ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๋ผ๊ณ ํ์ง ๋ง์ญ์์ค.
์ฌ์ ํ .env ํ์ผ์ ๊ณต์ ํ๋ฏ๋ก ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๋ผ๊ณ ํ์ง ๋ง์ญ์์ค.
env_file
์ฌ์ฉ ๋ ์ ํ๋ฆฌ์ผ์ด์
๋ณ .env
ํ์ผ์ ๊ณต์ ํฉ๋๊น?
์๋๋ฉด docker-compose
์ฌ์ฉํฉ๋๊น?
์๋๋ฉด ํผํฉํฉ๋๊น?
๋ง์ด ์ ๋ผ. ๋๊ตฐ๊ฐ๊ฐ ํ๋ก์ ํธ ์ด๋ฆ์ docker-compose.yml์ ์ถ๊ฐํ์ง ์์ผ๋ฉด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ ๋ฌธ์ ๊ฐ ์๋์ง๋ง ๊ทธ๊ฒ์ด ์ถ๊ฐ๋๋ฉด ํ๋์ด ๊ธ๊ฒฉํ ๋ฐ๋๋๋ค.
์์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด (์ฆ, ์
๊ทธ๋ ์ด๋ ํ
์คํธ๋ฅผ ์ํด) ์คํ์ ์ ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌ ํ ๋ docker-compose.yml
๋ฅผ ์ ํ ๊ฑด๋๋ฆฌ์ง ์์๋๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์คํ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ .env
์ฌ์ ์ํ ์ง ์๋๋ฉด docker-compose.yml
์์ ๋ณ๊ฒฝํ ์ง ๊ฒฐ์ ํด์ผํฉ๋๋ค.
๋ค, ๊ทธ๊ฒ์ ์ฒ์์ ์ถ๊ฐ ๋ ์๋๋ค, ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์์ ๋ค๋ฅธ ์ต์ ์ ๊ฐ์ง๊ณ ํ๋ ๊ฒ๋ ์ผ์ด ๋ ์ฝ๊ณ ๊ฐ๊ฒฐํ์ง ์์ต๋๋ค ์ ์์ต๋๋ค.
4 ๊ฐ์ ๋ช ๋ช ๋ compose ํ์ผ (๋์ผํ ๋๋ ํฐ๋ฆฌ์ ์์)์ด ์ฌ์ฉํ๋ ๊ณตํต ๋จ์ผ .env ํ์ผ์ด ์์ต๋๋ค. ํ๊ฒฝ ๋ณ์๊ฐ ์์ต๋๋ค. ์ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค. ๋๋ ๋จ์ง compose๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ ํธํ๋ค
docker-compose -f service1.yml up -d
๋์ ์์ด๊ฒ ๋
docker-compose -f service1.yml up -d
# F#&$, forgot the -p flag. Curse the compose devs for 3 years of c#*$blocking
docker-compose -f service1.yml down
docker-compose -f service1.yml -p service1 up -d
@ schmunk42 ๋น์ ์ ๊ทธ๊ฒ์ด ์๋ง๋ compose ํ์ผ ์ด๋ฆ์ ์ถ๊ฐ๋ก ๋ชจ๋ docker-compose ๋ช ๋ น์ ๋ํด
์๋น์ค ๋น ํ๋์ ํด๋๋ฅผ ์ฌ์ฉํ ์์๊ณ ์ฌ์ ํ ์ต์์ ํด๋์ .env
ํ์ผ์ด ์์ต๋๊น?
docker-compose -f service1/docker-compose.yml up -d
docker-compose -f service2/docker-compose.yml up -d
ํ๋ก์ ํธ ์ด๋ฆ์ ํ์ผ (-path)์ ์๋๋ค ๐
๋๋ ํฌ๊ธฐํ๋ค. ์ด์ ๋ํ ๊ณ ๊ฐ ๊ธฐ๋ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค.
๋ด๊ฐ ๋น์ ์๊ฒ ํ ์ ์์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง ์๋ ค์ฃผ์ธ์.
์ฒ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์์ง๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ๋ง๊ฒ ์ํฌ ํ๋ก๋ฅผ ์กฐ์ ํ์ต๋๋ค.
์ง๋ 2 ๋ ๋์ ์ฐ๋ฆฌ ํ ์ค ๋๊ตฌ๋ ์ค์๋ก ์คํ์ ์ฃฝ์ธ ๊ธฐ์ต์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฝ 1.000 ๊ฐ์ ์ปจํ ์ด๋์ 1.000 ๊ฐ์ ์๋ ๋๋ ์๋ ์ฌ๋ฐฐํฌ๋ก 200 ๊ฐ ์ด์์ ์คํ์ ์คํํ๊ณ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ฐธ์ฌํ๊ณ ์ถ์ง๋ ์์ง๋ง ... ์ ํญ ํ ์๋ ์์ต๋๋ค.
ํ์ฌ ์ํฉ์ ๋ฐ๋ฅธ "์๋ฃจ์ "๊ณผ ์กด์ฌ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ "์ฌ๋ฐ๋ฅธ"์๋ฃจ์ ์ฌ์ด์๋ ๋งค์ฐ ์ค์ํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ด ๋ฌธ์ ์ ์ด์ ์ ๋ง์ถฐ์ผ ํ๋ ๊ฒ์ "์ฌ๋ฐ๋ฅธ"์๋ฃจ์ ์ ์ฐพ๋ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ์๋ ํ ๊ฝค ๋ถ๋ช ํ์ง๋ง ์ผ๋ถ๋ ์ฌ์ ํ ๋์ํ์ง ์์ ์ ์์ต๋๋ค.
@ schmunk42 & @mikehaertl
์ง๋ 2 ๋ ๋์ ์ฐ๋ฆฌ ํ ์ค ๋๊ตฌ๋ ์ค์๋ก ์คํ์ ์ฃฝ์ธ ๊ธฐ์ต
๋ฌผ์ด๋ด์ผ ๊ฒ ์ด. ๋ ๋ถ ๋ชจ๋ codemix ์กฐ์ง์ ์ผ์์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๋น์ ์ ๋๋ฃ์ ๋๊น? ๋ค์์ ๋ ์ฌ๋์ด rotfl์ธ์ง ๊ถ๊ธํดํ๊ธฐ ์์ํ์ต๋๋ค.
ํ์ฌ (์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌ) :
- -p์ ๊ฐ
- ํ๊ฒฝ์ COMPOSE_PROJECT_NAME ๊ฐ
- .env ํ์ผ์ COMPOSE_PROJECT_NAME ๊ฐ
- ํ์ฌ ๋๋ ํ ๋ฆฌ ์ด๋ฆ
์ ๋ง์ ์นํธ์๊ฐ๋๊ธฐ ์ํด ์ด๋ฏธ ํผ๋์ค๋ฌ์ด ์ค์ ์ 5 ๋ฒ์งธ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ด๊ฐ๋ณด๊ธฐ์ ๋ฌธ์ ๋ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ _ ๋ชจ๋ ๋จ์ผ ๊ฐ _์ _environment-specific_์ ๋๋ค. ํ๋ก์ ํธ ๋ณ ์ต์ ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
1 + 2. ๋ช ๋ น์ ํธ์ถํ๋ ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์ ๊ณตํด์ผํฉ๋๋ค.
.env
๋ ๋ฌด์ํ๊ณ ์ ๋นํ ์ด์ ๋ก ๊ณต์ ํด์๋ ์๋ฉ๋๋ค. ( .env.example
๊ณต์ ํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง ์ฌ์ ํ ์ถ๊ฐ ์๋ ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค.)์ ์๊ฐ์,์ด ์ค๋ ๋์ ๋ง์ ๊ฒ๋ค์ 3๊ณผ 4 ์ฌ์ด์ ์กด์ฌํ๋ ์ต์ ์ด ์์ด์ผํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ด๋ฆ _can_์์ด ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ docker-compose ํ์ผ์ ์ ๊ณต๋๊ณ ์ฒซ ๋ฒ์งธ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋์ฒด. ์ด ๊ฐ์์ด ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๋ ๋ชจ๋ ์ฌ๋์ด ๊ณต์ ํฉ๋๋ค. ์ต์ 1-3์ ํด๋น ๊ฐ์ ์ฌ์ ์ํ๊ณ ์ต์ 4๋ ์ ๊ณต๋์ง ์์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
@benjaminwood ์๋ฌด๋์ด ๋ฌธ์ ์ ๋ํด ์๊ณ ์์ง
๋ฟก ๋นต๋จ
- ๊ณต์ ํ ์ ์์ง๋ง ์ค์ ๋ก .env๋ ๋ฌด์ํ๊ณ ์ ๋นํ ์ด์ ๋ก ๊ณต์ ํด์๋ ์๋ฉ๋๋ค.
์ค์ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ๋ชจ๋ ํ๋ก์ ํธ ์ ์ฅ์์์ ๋ฌด์ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์คํ
์ด์ง ๋ฐ ํ๋ก๋์
์คํ ์ ์ฉ ๋ฆฌํฌ์งํ ๋ฆฌ์์๋์ด๋ฅผ ๋ฌด์ํ์ง ์์ต๋๋ค. docker-compose.yml
์์ ์ปค๋ฐ ๋ ์ด๋ฆ์ ๊ณต์ ํ๋ ค๋ ๊ฒฝ์ฐ .env
๋ ์ปค๋ฐ ํ ์ ์์ต๋๋ค (์ด ํ์ผ์ docker-compose
๋ช
๋ น ์๋ง ํด๋น ๋๋ฉฐ ๋ค๋ฅธ ๊ฒ์ ์์).
- ์ฌ์ค์ ๋ฌด์์์ด๋ฉฐ ์ฌ์ฉ์ / ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
docker-compose.yml
์ ๊ฐ๋ณด๋ค ๋ ๋ง๊ฑฐ๋ ๋ ์์์ ์ด์ง ์์ผ๋ฏ๋ก ์คํ ๊ตฌ์ฑ์ ๋จ์ผ ํ์ผ์ด ์๋ ํด๋๋ก ๋ณผ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด .env
์ด๋ฆ์ ํฌํจํ๊ฑฐ๋ ํ์ ํด๋ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ ๋ชจ๋๋ฅผ์ํ ๋ง์ง๋ง ๋์์ด ์์ต๋๋ค.
docker stack deploy -c docker-compose.yml the-project-name
(*) ์ค์ ๋ชจ๋์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
์์ผ๋ก ์ด๋ป๊ฒ ํ๋ก์ ํธ ์ด๋ฆ์ด yml
ํ์ผ์ ๋ฐฐ์น ๋ ์ ์๋์ง ์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์คํ ์ ์ ๊ฐ๋
๊ณผ ์์ ํ ๋ชจ์
๊ฐ์ฌํฉ๋๋ค @ schmunk42. ๋๋ ๋น์ ๊ณผ ๋๋ ๋น์ ์ด์ด ์ค๋ ๋์ ํ์๋ ๋ชจ๋ ๊ฐ๋ ฅํ ์๊ฒฌ ์ค์์ ์ผ์ ์์ฃผ ์ ์ฒ๋ฆฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ค์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์์๋ ์์ฒญ๋ ์์ธ์ด๋ฉ๋๋ค.
๋ฌธ์ง๋ฆ์ด ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋ซ์ต๋๋ค.
์ค์ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ๋ชจ๋ ํ๋ก์ ํธ ์ ์ฅ์์์ ๋ฌด์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์คํ ์ด์ง ๋ฐ ํ๋ก๋์ ์คํ ์ ์ฉ ๋ฆฌํฌ์งํ ๋ฆฌ์์๋์ด๋ฅผ ๋ฌด์ํ์ง ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ํ๋์ด ๊ธฐ๋ฅ์ ๋น์ ์์ ์ธ ์ ์ฅ์ ์ํคํ ์ฒ๋ฅผ ๋ง์น ์ ์๊ธฐ ๋๋ฌธ์ ๋์ ํด์๋ ์๋ฉ๋๊น?
docker-compose.yml
์์ ์ปค๋ฐ ๋ ์ด๋ฆ์ ๊ณต์ ํ๋ ค๋ ๊ฒฝ์ฐ.env
๋ ์ปค๋ฐ ํ ์ ์์ต๋๋ค (์ด ํ์ผ์ docker-compose ๋ช ๋ น ์ ์ฉ์ด๋ฉฐ ๋ค๋ฅธ ๊ฒ์ ์์).
์, ๋ด .env
ํ์ผ์ ์ ์ผํ ๊ฒ์ด COMPOSE_PROJECT_NAME
์ด๋ฉด ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ปค๋ฐํ๊ณ ์ถ์ง ์์ ๋ค๋ฅธ ๋ง์ _secure_ ๋ณ์๋ก ์ฑ์์ ธ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ environment
์์ฑ์ ์ฌ์ฉํ์ฌ docker-compose๋ก ๊ฐ์ ธ์ต๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก .env
ํ์ผ์ ์ฉ๋์
๋๋ค.
๋ด ์ ์์์ ๋๋ ํ ๋ฆฌ์์ ๊ฐ์ ธ์จ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ด๋ฆ ๋ง ์ฌ์ ์ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ค์ ์ ๊นจ๋จ๋ฆฌ๋ ์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ๊ทธ๊ฒ์ ์์กดํ๋ค๋ฉด (๋น์ ์ ์ ์ฅ์๊ฐ ๋ณต์ ๋๋ ๋๋ ํ ๋ฆฌ์ ๋ฐ๋๋ก ๋น์ ์ ์ ์ฅ์์ ์ปค๋ฐ ๋ ๋๋ ํ ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์), ์ด๋ป๊ฒ docker-compose.yml ์ค์ ์ ์ํด ์ฌ์ ์ ๋ ์ ์์ต๋๊น (์ปค๋ฐ๋๊ธฐ ๋๋ฌธ์ ๋น์ ์ ์ ์ฅ์์; ๋น์ ์ ๋น์ ์ ์๋๋ฆฌ์ค์์ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ ์ดํฉ๋๋ค)?
@ schmunk42 ๋น์ ์ด ๋งํ๋ ๊ฒ์ "๋๋ ๋ ์ด์ ๋ด ํ๋ก์ ํธ ์ค์ ์ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ํ์ง ์๋๋ค"์ ๋๋ค.
์ ๋ง? ์ด๊ฒ์ด ๋น์ ์ด ์ด๊ฒ์ ํ์๋กํ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ด์์ดํ๊ธฐ๋ฅผ ์ํ๋ ์ด์ ์ ๋๋ค.
๊ธฐ๋ก์ ์ํด์ : ๋๋ ์ฌ๊ธฐ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ข ๊ฒฐ ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ ผ์๋ ๋ฌด์๋ฏธ ํด์ก์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ํ๋์ด ๊ธฐ๋ฅ์ ๋น์ ์์ ์ธ ์ ์ฅ์ ์ํคํ ์ฒ๋ฅผ ๋ง์น ์ ์๊ธฐ ๋๋ฌธ์ ๋์ ํด์๋ ์๋ฉ๋๊น?
์ถ๊ฐ ์ค๋ฅ ์์ธ์ด ๋ฐ์ํ ์ ์๋ค๋ ์ฐ๋ ค๋ฅผ ํ๋ช ํ๊ณ ์์ต๋๋ค.
๋ด .env ํ์ผ์ ์ ์ผํ ๊ฒ์ด COMPOSE_PROJECT_NAME์ด๋ผ๋ฉด ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ปค๋ฐํ๊ณ ์ถ์ง ์์ ๋ค๋ฅธ ๋ง์ ๋ณด์ ๋ณ์๋ก ์ฑ์์ ธ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๊ฒฝ ์์ฑ์ ์ฌ์ฉํ์ฌ docker-compose๋ก ๊ฐ์ ธ์ต๋๋ค.
์ฉ๋ secrets.env
์ฌ๋๋ค๊ณผ๋ฅผ ํตํด ๊ฐ์ ธ์ฌ env_file
.
์ํฌ ํ๋ก์ฐ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ๊น์?
์ด๊ฒ์ .env ํ์ผ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ด์ ์ ๋๋ค.
์ฌ์ค ...ํ์ง๋ง ๋ฌธ์ ๋ docker-compose
๊ฐ .env
ํ์ผ์ ํ์ทจ ํ๋ค๋ ๊ฒ์
๋๋ค.
docker-compose.yml
์ ๊ฐ์ด IMAGE_VERSION
docker-compose.yml
์ ์ต์์ ์์ค์์ ์ฌ์ฉ๋๋ ๋ณ์ ์ docker-compose.env
๋ผ๋ ํ์ผ์ ์ค์ ํ ์ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
๋๋ ๊ฐํ COMPOSE_COMMAND_ENV_FILENAME=.env
์ ์ ์ํ์ง ์์๋ค-์ง๊ธ๊น์ง :)
๋๋ ์ด๊ฒ์ด ๋น์ ์ ์ค์ ์ ์ด๋ป๊ฒ ๊นจ๋จ๋ฆด ๊ฒ์ธ์ง ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํ๋ค.
์ฆ์ ์ค๋จ๋์ง๋ ์์ง๋ง ์ฒซ ๋ฒ์งธ ์์ ์ ๊ดํ ๊ฒ์ด๋ฉฐ ๋ ๋ง์ ์ต์ ์ ์๊ฐํ๋ ๊ฒ์ ๋๋ค.
์ฌ๋ฌ ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์๊ฐํด๋ณด์ญ์์ค -f docker-compose.A.yml
-f docker-compose.B.yml
, A๊ฐ ํ๋ก์ ํธ์ด๊ณ ๋๋ ํ ๋ฆฌ๋ณ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์์กดํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค (์ฐ๋ฆฌ๊ฐ ์ ์ดํ๋ฏ๋ก ๊ทธ๋ ๊ฒํฉ๋๋ค!). ๋ฐ๋ฉด B๋ ์ ์ถ๊ฐ ์๋น์ค ์ธํธ project_name: extra
ํ ํด๋์ ํ
์คํธํ๋ ๋์, ์ค์๋ก ๋์
.env
์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ฎ์ด ํ์ผ COMPOSE_PROJECT_NAME=testing
.
๊ทธ๋ฌ๋ ์ด์ .env
ํ์ผ์์ด ์์๋๋ ๋ชจ๋ ํ๋ก์ ํธ์ ์ด๋ฆ์ extra
์
๋๋ค. ๐ฅ
์ฌ๋ฌ ๊ฐ์ *.env
ํ์ผ์ ํฌํจํ์ฌ ์ฌ๋ฌ ์์ค์์ ํ์ผ์ ๋ณํฉํ๊ณ ์์ผ๋ฉฐ ์ด๋ ๋งค์ฐ ์ ํจํ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค.
์ ๋ง? ์ด๊ฒ์ด ๋น์ ์ด ์ด๊ฒ์ ํ์๋กํ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ด์์ดํ๊ธฐ๋ฅผ ์ํ๋ ์ด์ ์ ๋๋ค.
๊ฒฝ๊ณ : ์ฝ๊ฐ ๋ฒ์ด๋ ์ฃผ์ ์ด์ง๋ง ์ฌ์ ํ ๋์ปค์ ๊ด๋ จ์ด ์์ต๋๋ค ...
@mikehaertl ๋๋ ๋น์ ์ด ์ด๋ฐ ์์ผ๋ก ๋ณด๋ ๊ฒ์ด ์ ๋ง ๊ถ๊ธํฉ๋๋ค.)
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ฐ๋ฆฌ๋์ด ์ค๋ ๋์์ ์ด์ ์ ์ธ ํ ๋ก ์ ์ป์์ต๋๋ค (์์ ๋ฐ๋ฅด๊ณ ์น์ ํ๊ฒ ์ง์ผ ์ฃผ์ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค!). ์ฐ๋ฆฌ๋ ์ฌ์ ํ ํ๋ก์ ํธ ์ด๋ฆ์ด Compose ํ์ผ์ ์ํ์ง ์๋๋ค๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฏฟ๊ณ ์์ง๋ง ์ฐ๋ฆฌ๋ PR : # 5378์ผ๋ก ํฉ๋ฆฌ์ ์ธ ์ค๊ฐ ์ง์ ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ฆ, ๊ทํ์ ์๊ตฌ์ ๋ง๋์ง ํ์ธํ๊ธฐ ์ํด ์ด์ ๋ํ ๊ทํ์ ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
x-project-name
ํญ๋ชฉ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ์ด ํค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌด์๋ฉ๋๋ค..env
ํ์ผ)์ COMPOSE_X_PROJECT_NAME
๊ฐ ์ค์ ๋์ด ์์ผ๋ฉด Compose๋ Compose ํ์ผ ๋ด์ x-project-name
ํญ๋ชฉ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฒ์ํ๋ ค๊ณ ์๋ํฉ๋๋ค.COMPOSE_PROJECT_NAME
๋ฐ --project-name
๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์ต๋๋ค.์ด์ ๊ด๋ จ๋ ์ง๋ฌธ์ด๋ ์ฐ๋ ค ์ฌํญ์ ๊ธฐ๊บผ์ด ํด๊ฒฐํด๋๋ฆฝ๋๋ค.
@ shin- ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ค๋ฉด COMPOSE_X_PROJECT_NAME
์ 1
๋ก ์ค์ ํด์ผํฉ๋๊น?
๊ทธ๋ ๋ค๋ฉด COMPOSE_ENABLE_X_PROJECT_NAME
๋ ์๊ฐํ ์ด๋ฆ์ด ๋ ์ ์์ง๋ง ์ด๊ฑด ๋ด 2 ์ผํธ ์ผ๋ฟ์
๋๋ค. ์ด์จ๋ ์ฌ์ฉํ์ง ์๊ฒ ์ต๋๋ค ๐
@ schmunk42 ๋ชจ๋ "์ง์ค"๊ฐ์ด ์๋ ํ์ง๋ง, ๊ทธ๊ฒ ๋ฐ๋ก ์์ด๋์ด์ ๋๋ค.
@matsaman Cool, ์ ์ฉํ๊ณ ์คํ ๊ฐ๋ฅํ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ต์ข ์ฌ์ฉ์์๊ฒ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ํธ์ถํ๋๋ก ์ง์ํด์ผํ๋ค๊ณ ๋งํ๋ ๋์ , ์ต์ข ์ฌ์ฉ์์๊ฒ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ํธ์ถํ๋๋ก ์ง์ํด์ผํ๋ค๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค.
์์งํ, ๊ทธ๋ฆฌ๊ณ ์ง์ ์ผ๋ก ์๋ฌด๊ฒ๋ ์๋๋๋ค. ์ด๋ค ์ ์ผ๋ก๋ ์ด๊ฒ์ ํด๊ฒฐ์ฑ ์ผ๋ก ์๊ฐํ ๋ฐฉ๋ฒ์ ์์ํ ์ ์์ต๋๋ค.
@ shin-์ด ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉํ ์ฐจ์ด๋ฅผ ๋ง๋ค์ง ์๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์์ฑ ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฐพ์ ์ ์๋๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ผํ๋ ๊ฒ์ ํ๋ก์ ํธ ์ด๋ฆ ์์ฒด์ ๋ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋๋ฑํ {์์ ๋, ์์ด ๋ฒ๋ฆด ์ํ์ฑ ๋ฐ ํธ์์ฑ}์ ๋๋ค.
compose ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ์์ ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ ํ๊ฒฝ ๋ณ์์ ์ฐ์ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ compose ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ํ๋ ์ต์ ์ ์ ๊ณต ํ ์ ์์ต๋๋ค.
BC๋ฅผ ๊นจ์ง ์๊ณ ์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ๋ณํฉ ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ข์ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์์ฑ ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฐพ์ ์ ์๋๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ผํ๋ ๊ฒ์ ํ๋ก์ ํธ ์ด๋ฆ ์์ฒด์ ๋ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋๋ฑํ {์์ ๋, ์์ด ๋ฒ๋ฆด ์ํ์ฑ ๋ฐ ํธ์์ฑ}์ ๋๋ค.
์ด ์ค์ ์ ํ๊ฒฝ์์ ํ ๋ฒ๋ง ์ํ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ์์์ด ์์ ์ ์ํ ํ ํ์๋ ์์ต๋๋ค.
์ด ์ค์ ์ ํ๊ฒฝ์์ ํ ๋ฒ๋ง ์ํ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ์์์ด ์์ ์ ์ํ ํ ํ์๋ ์์ต๋๋ค.
๋๋ ๋น์ ์ด ์ปดํจํฐ์์ ์์ฑํ๋ ๋ชจ๋ ์์์ ์ ์ธ๊ณ์ ์ผ๋ก ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ๊ฒํ๋ฉด ์์ ํ ๊ด๋ จ์ด์๋ ํ๋ก์ ํธ์์ ์์น ์๋ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ํ ๊ฐ๋ฐ์๊ฐ ๋ฒ์ ์ ์ด์์ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์ค๊ณ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์์์ ๋ ํผ๋์ ์ผ๊ธฐํฉ๋๋ค.
compose ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ํฌํจํ๋ ๊ฐ์ฅ ์ค์ํ ๋ชฉํ ์ค ํ๋๋ compose ํ๋ก์ ํธ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ณ์๊ฐ ๋ฒ์ ์ ์ด์ ์ ์ฅ๋๋๋กํ๋ ๊ฒ์ ๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
์ด๋ .env
ํ์ผ ์๋ฃจ์
์ด ์ต์
์ด ์๋ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์ฌ๋ฌ compose ํ์ผ์ด์๋ ์ฌ๋๋ค์ ๋๊ธฐ์ํ ๊ฒ์
๋๋ค. ํ๋ก์ ํธ์ ํญ์ ์ผ์ ธ ์์ด์ผํ๋ ๊ฒฝ์ฐ .env
ํ์ผ, .profile
๋๋ x-project-name
๊ฐ ํญ์ ์ฌ์ฉ๋๋๋ก ๋ณด์ฅํ๋ ๋ค๋ฅธ ๋ชจ๋ ์์น์์ ์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. ๊ณ์ ์.
์ต์ข ์ฌ์ฉ์์๊ฒ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ํธ์ถํ๋๋ก ์ง์ํด์ผํ๋ค๊ณ ๋งํ๋ ๋์ , ์ต์ข ์ฌ์ฉ์์๊ฒ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ํธ์ถํ๋๋ก ์ง์ํด์ผํ๋ค๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ํ ์ฐ๋ฆฌ์ ์ฃผ์ ๊ด์ฌ์ฌ๋ ํญ์ "์ต์ข
์ฌ์ฉ์"๊ฐ ์์ฒด ํ๋ก์ ํธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด๋ค ๋๊ฐ๋ฅผ ์น๋ฅด๋๋ผ๋ ์ด๋ฆ ์ถฉ๋์ ํผํ๊ณ ์ํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ์ ์์ ๊ทธ๋ค์ ๋ฐฐํฌ์๊ฐ ์๋ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ด๋ฆฌํด์ผํฉ๋๋ค. "ํดํค"ํ๋ก์ ํธ๋ฅผ ๊ณ ๊ฐ์๊ฒ ๋ฐฐ์กํ๋ ๊ฒฝ์ฐ ๊ด๋ จ .env
ํ์ผ์ COMPOSE_X_PROJECT_NAME
๋ฅผ ์ค์ ํ๋ ๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๋จํฉ๋๋ค. ๋ฐ๋ผ์์ด ์ค ์ด๋ค ๋ถ๋ถ์ด ์ ์งํด์ผํ ์ง ํผ๋ ์ค๋ฝ์ต๋๋ค.
๊ทธ๋ ๊ฒํ๋ฉด ์์ ํ ๊ด๋ จ์ด์๋ ํ๋ก์ ํธ์์ ์์น ์๋ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น? ์
ธ์์ COMPOSE_X_PROJECT_NAME
์ค์ ๋ง์ผ๋ก ์์น ์๋ ๋์์ ์๊ฐํ ์ ์์ต๋๋ค.
compose ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ํฌํจํ๋ ๊ฐ์ฅ ์ค์ํ ๋ชฉํ ์ค ํ๋๋ compose ํ๋ก์ ํธ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ณ์๊ฐ ๋ฒ์ ์ ์ด์ ์ ์ฅ๋๋๋กํ๋ ๊ฒ์ ๋๋ค.
์ .env
์ฌ์ฉํ ์ ์์ต๋๊น? ์๋ฌด๋ ๋ฒ์ ๊ด๋ฆฌ์ .env
์ ์ฅ์ ๊ธ์ง ํ์ง ์์ต๋๋ค (์, ์ผ๋ฐ์ ์ด์ง ์์).
์ฒ์์๋ .env
์์์ต๋๋ค. ์ ์ฒด ๋ํ๋ฅผ ๋ถ๋ช
ํ ๋์ณค์ต๋๋ค.
@matsaman ์ง์งํ๊ฒ ํ๋๋ฅผ
ํผ๋์ ๋ช ํํํ๊ธฐ ์ํด
๋น์ ์ ์ด๋ฏธ ํ ์ ์์ต๋๋ค
์ด์ ์๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ ์์์์ต๋๋ค. ์ ํ๊ฒฝ ๋ณ์๋ ์ด๋ฆ์ด ์๋๋ผ ์์ฑ ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ ์์๋ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ํ ๊ธ์ ๋๋ค.
๋๋ ๋น์ ์ด ์ปดํจํฐ์์ ์์ฑํ๋ ๋ชจ๋ ์์์ ์ ์ธ๊ณ์ ์ผ๋ก ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ๊ฒํ๋ฉด ์์ ํ ๊ด๋ จ์ด์๋ ํ๋ก์ ํธ์์ ์์น ์๋ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
"๋ค๋ฅธ ํ๋ก์ ํธ"๋ฅผ ๊ทธ๋๋ก ์๋ฏธํ๋ค๋ฉด "๊ตฌ์ฑ๋์ง ์์ ๊ฒ์ด ์ด๊ฒ์ ์ฝ๊ณ ๊นจ์ง ์์๋ค"๋ ๊ฒ์ ํ์ค์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ์ ธ์๋ ๋ง์ ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ด ์์ต๋๋ค. ํ๊ฒฝ ๋ณ์๋ "COMPOSE_X_"๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๋ค์ ์คํ์ด์ค๊ฐ ์ง์ ๋ฉ๋๋ค.
"๋ค๋ฅธ ํ๋ก์ ํธ ์์ฑ"์ ์๋ฏธํ๋ค๋ฉด์ด ๋ณ์๊ฐ ํ์ํ ์ด์ ์ ๋ํด ์ค์ ๋ก ๋ ผ์์ ๋ฒ์ด๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฉด ํ์ฌ ๊ธฐ๋ณธ ๋์์ ์์กดํ๋ ๋ชจ๋ ์ฌ๋์ด ์ค๋จ๋ฉ๋๋ค.
๋ ๋ค ์๋ ๊ฒฝ์ฐ ๋ช ํํํ์ญ์์ค.
๋ํ ๊ฐ๋ฐ์๊ฐ ๋ฒ์ ์ ์ด์์ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์ค๊ณ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์์์ ๋ ํผ๋์ ์ผ๊ธฐํฉ๋๋ค.
ํ๋ก์ ํธ๊ฐ ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก ๋ง ์๋ํ๋ฉด ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ๋จ์ผ ์ด๋ฆ์ผ๋ก ๋ง ์๋ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์๋ ์๋ฉ๋๋ค.
Compose ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ฃ์ง ์์ ๊ฒ์ ๋ํ ๋ ๋ค๋ฅธ ์ฃผ์ฅ์ผ๋ก ์๊ฐํฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ด compose ํ์ผ์ ์์ผ๋ฉด ๋ ํ๋ก์ ํธ๊ฐ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ฌ ๋ ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ์ค๋จ๋ฉ๋๋ค. ์ด๋ฆ์ ์ด๋ฏธ ์ฌ์ฉ์ค์ธ ๋ค๋ฅธ ํ๋ก์ ํธ ์ด๋ฆ์ ์๊ณ ์๋ ๊ฐ๋ฐ์๊ฐ ์ค์ ํด์ผํฉ๋๋ค.
๋ถํํ๋ ์ด๊ฒ์ ๋ด๊ฐ 1 ๋ ์ ์ ์ด๋ฏธ ์ธ๊ธ ํ ์ด์ ๋ก ๋์๊ฒ๋ ๋์์ด๋์ง ์์ ๊ฒ์ ๋๋ค.
ํ๊ฒฝ ๋ณ์๋ฅผ ํฌํจํ๋ ์๋ฃจ์ ์ ์ฒ์์ ๋ณ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์์ผํ๋ ์ฌ์ฉ์๊ฐ ํ์ํฉ๋๋ค. ๋ฏฟ๊ธฐ โโ์ด๋ ค์ธ ์๋ ์์ง๋ง ๋ชจ๋ ์ฌ๋์ด ํฐ๋ฏธ๋ ๋ด๋ถ์์ ์ผํ๋ ๊ฒ์ ์๋๋๋ค. ๋ค์ ๋งํ์ง๋ง, ์ ์ฅ์์ .env๋ฅผ ๋ฃ๋ ๊ฒ์ ๋์๊ฒ ์ต์ ์ด ์๋๋๋ค.
docker-compose์ ์๋ฆ๋ค์์ up
์
๋๋ค. ํตํ ์ค์ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ด ์๋๋๋ค.
๋ฟก ๋นต๋จ
๋ค์ ๋งํ์ง๋ง, ์ ์ฅ์์ .env๋ฅผ ๋ฃ๋ ๊ฒ์ ๋์๊ฒ ์ต์ ์ด ์๋๋๋ค.
ํ์ฅ ํ ์ ์์ต๋๊น? ๊ธฐ์ ์ง์์ด ๋ถ์กฑํ ์ฌ์ฉ์์ ๋ํด ์์ ํ ๋ฃ์ง๋ง, ์ฝ๋ ๋ ํ๊ฒฝ๊ณผ ์ํธ ์์ฉํ ์์๋ ๊ฒฝ์ฐ ํ๋ก์ ํธ์ .env
ํ์ผ์ ํฌํจํ๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ๋๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
@ shin- ๊ทธ๋, ๋ฌธ์ ์์ด.
์ด๋ค ๊ฒฝ์ฐ์๋ ํด๋น ํ์ผ์ ์ ์ฅ์์ ํฌํจํ์ง๋ง ํญ์ ์๋ํ์ง ์์ต๋๋ค. ๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋๋ถ๋ถ ๊ฐ๋ฐ์์ ๊ธฐ์ ์ง์์ด ํฌ๊ฒ ๋ค๋ฅผ ์์๋ ์น ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ฉ๋๋ค.
.env
์๋ ๋ค๋ฅธ ํ๋ ์ ์ํฌ์์ ์ฌ์ฉ๋๋ ๋งค๊ฐ ๋ณ์๊ฐ ์์ต๋๋ค. ๋ด .env
๋ด๋ถ์ ์ผ๋ถ ๋ณ์๋ SMTP์ ๊ฐ์ ์ธ๋ถ ์๋น์ค์ ๋ํ ์๊ฒฉ ์ฆ๋ช
์
๋๋ค. ์ฐ๋ฆฌ ํ์ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ์์ฒด .env
ํ์ผ์ ์ฌ์ฉํ์ฌ ํด๋น ์๋น์ค๋ฅผ ์์ฒด ์๋ ํฌ์ธํธ๋ก ์ง์ ํฉ๋๋ค. .env
๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์์ต๋๋ค.
์ผ๋ถ CSS ๋ง ๋ณ๊ฒฝํ๋ ค๋ ๊ธฐ์ ์ด ์ ์ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ .env
ํ์ผ ์์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ์๋ํฉ๋๋ค. ์ด๋ ๋ชจ๋ ํ๋ก์ ํธ ํด๋์ ์ด๋ฆ์ ๋์ผํ๊ฒ ์ง์ ํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. :)
๋ณ๋ก ๋ณด์ด์ง ์์ ์๋ ์์ง๋ง ์ ๊ตญ์ ๊ฑธ์ณ์๋ ์ฌ๋ฌ ๊ฐ๋ฐ์ ๋ฐ ๋์์ด๋์ ํจ๊ป ์์ ํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ๋จํ ์๋ก ์ข์ต๋๋ค.
Docker๋ ๋ด ์ถ์ ํจ์ฌ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ๋ฉฐ์ด ํ๋ก์ ํธ์ ๋ํด ๋งค์ฐ ๊ฐ์ฌํ์ง๋ง์ด ์ค๋ ๋๋ฅผ ๋๋ฌ์ผ ์ข์ ๊ฐ์ ๊ณต๊ฐํ ์ ์์ต๋๋ค.
@fiveanddone ํต์ฐฐ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋ฐ๋ผ์ .env
ํ์ผ์ด docker-compose.env
(๋๋ ์ด์ ์ ์ฌํ ์ด๋ฆ)์ผ๋ก ๋์ ๋ถ๋ ธ๋ค๋ฉด ์ฐ๋ ค ์ฌํญ์ด ์ํ๋ฉ๋๊น?
@์ ๊ฐ์ด-
์, ๋ด ์ฌ์ฉ ์ฌ๋ก์ ํด๋น๋ฉ๋๋ค.
Docker Compose์์ env ํ์ผ์ ์๋์ผ๋ก๋ก๋ํฉ๋๊น?
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ docker-compose.env
์๋์ผ๋ก๋ก๋ ํ ์ ์์ต๋๊น?
@nhooey env ํ์ผ ์ด๋ฆ์ด .env
๊ฒฝ์ฐ ์๋์ผ๋ก๋ก๋๋ฉ๋๋ค. ๋ํ ๊ฐ ์๋น์ค์ ๋ํด ๊ฐ๋ณ์ ์ผ๋ก env ํ์ผ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
env ํ์ผ์ ์ด๋ฆ์ด .env ์ธ ๊ฒฝ์ฐ ์๋์ผ๋ก๋ก๋๋ฉ๋๋ค. ๋ํ ๊ฐ ์๋น์ค์ ๋ํด ๊ฐ๋ณ์ ์ผ๋ก env ํ์ผ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฌ๊ธฐ์ nitpicker๋ ์๋์ง๋ง ์ค์ ๋ก๋ ์ ํํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ IMHO๋ ์ ์ฒด ์ฃผ์ ์ ๋ํ ์คํด์ ๊ฐ์ฅ ํฐ ์์ฒ์ ๋๋ค.
.env
์ ๋ณ์๋ ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ
env_file:
- .env
๋๋
environment:
- VAR_FROM_DOTENV
- FOO=${ANOTHER_VAR_FROM_DOTENV}
.env
ํ์ผ์ ์๋์ผ๋ก๋ก๋๋์ง๋ง ์ถ๊ฐ ๊ตฌ์ฑ ์์ด๋ ์ด๋ฌํ Compose CLI ํ๊ฒฝ ๋ณ์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก docker-compose.env
๋ก ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๊ฐ๋ ฅํ ์ง์ ํ๊ณ ๋ ๋์-๊ทธ์ ๋ํ ๋ณ์ ์ด๋ฏ๋ก ์ด๊ฒ์ ํ๋์ ENV-var๋ฅผ ์ค์ ํ๋ BC ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
(์์ ๋ฐ๋ฅด๊ณ ๋ฐ๋ปํ ๋ง์์ผ๋ก ์ง์ผ ์ฃผ์ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค!)
๋๋ ๋น์ ์ ๋ง์ ๋ฃ๊ณ ๋๋ ํญ์ ๋ด ํ์ ์ ์ ์งํ์ง ์์ ๊ฒ์ ๋ํด ํ์คํ ์ ์ฃ์ ๋๋ค. ๊ทธ ์ฃ์กํฉ๋๋ค. ์ผ๋ถ ๋๊ธ์ ๋๋๋ก ๋๋ฅผ ์์ํ๊ฒํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ด compose ํ์ผ์ ์์ผ๋ฉด ๋ ํ๋ก์ ํธ๊ฐ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ฌ ๋ ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ์ค๋จ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ํ ์ฐ๋ฆฌ์ ์ฃผ์ ๊ด์ฌ์ฌ๋ ํญ์ "์ต์ข ์ฌ์ฉ์"๊ฐ ์์ฒด ํ๋ก์ ํธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด๋ค ๋๊ฐ๋ฅผ ์น๋ฅด๋๋ผ๋ ์ด๋ฆ ์ถฉ๋์ ํผํ๊ณ ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ์ ์์ ๊ทธ๋ค์ ๋ฐฐํฌ์๊ฐ ์๋ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ด๋ฆฌํด์ผํฉ๋๋ค.
@ shin- docker-compose.yml
๋ ํญ์ ํ๋ก์ ํธ์ ์ผ๋ถ์ด๊ณ ํ๋ก์ ํธ ์ ์ฅ์์ ์๋ค๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋ฐ๋์ ์ฌ์ค์ด ์๋๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ ์ค ์ผ๋ถ๋ docker-compose.yml
๊ณต์ ํ์ง ์์ง๋ง ๋ก์ปฌ ์ฌ์ฉ์ ์ ์ (์ : ๊ฐ๋ฐ ์ค์ , ํธ๋ผ์ด ์์ ๋ฑ)๋ก ๋ก์ปฌ ๋ฒ์ ์ ์ ์งํ๋ ค๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ "์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง"์ ๊ด๋ จํ์ฌ : ์ด๋ฆ์ด ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ์ถฉ๋ํ๋ ๋์ ํ์ผ ์์คํ
์์ค์์ ๋ ์ค์ํ ์ด๋ฆ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. .env
๋ ํ๋ก์ ํธ์์ ํด๋น ์ด๋ฆ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ผ๋ฐ์ ์ธ ์ด๋ฆ์
๋๋ค. ์ฑ๋ณ ์ค์ . ๊ฐ๋ฐ์๊ฐ ์ ๋ง๋ก ์ํ์ง ์๋ ํ ๋์ปค ์ค์ ์ผ๋ก ์ค์ผ๋์ด์๋ ์๋ฉ๋๋ค. ๊ทธ๋ฌ๋์ด ๊ฒฐ์ ์ ๊ฐ๋ฐ์์๊ฒ ๋งก๊ฒจ์ผํฉ๋๋ค.
๋ค์์ ์ ์ ์ฌํญ์
๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ๋ํด ๋ ๊ฐ์ง ๋ค๋ฅธ ์ต์
์ ์ถ๊ฐํ๊ณ docker-compose.yml
V4์์ .env
์ฌ์ฉ์ ์ค๋จํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ํ๋๋ project_name
์ docker-compose.yml
์ด๊ณ ๋ค๋ฅธ ํ๋๋ ์ด๋ฆ ๋ง ํฌํจํ๊ณ ์ ๋ ์ ์ฅ์์ ์ ์ถํด์๋ ์๋๋ .dockerproject
ํ์ผ์
๋๋ค. ๋ก์ปฌ ํ์ผ์ด์ด์ผํฉ๋๋ค.
์ฐ์ ์์์ ๋ํ ๋ด ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค (๊ฐ์ฅ ๋์ ๊ฒ๋ถํฐ).
-p
CLI ์ธ์.dockerproject
ํ์ผproject_name
์ docker-compose.yml
( docker-compose.yml
๊ฐ ํ๋ก์ ํธ์ ํจ๊ป ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ ํผํด์ผ ํจ)COMPOSE_PROJECT_NAME
COMPOSE_PROJECT_NAME
.env
(์ง์ ์ค๋จ๋จ)์ด๋ ๊ฒํ๋ฉด ๋๊ตฐ๊ฐ๊ฐ ๋ฐฐํฌ ๋ docker-compose.yml
์์ ํ๋ ์ฝ๋ฉ ํ ๊ฒฝ์ฐ์๋ ์ต์ข
์ฌ์ฉ์๊ฐ .dockerproject
์ ํ๋ก์ ํธ ์ด๋ฆ์ ํญ์ ์ฌ์ ์ ํ ์ ์์ต๋๋ค.
์
๋ฐ์ดํธ : ๋ด๊ฐ ์ฌ์ฉ ๋ผ์ด๋ธ๋ ํ ์ .dockerenv
๋๋ docker.env
๋์ .dockerproject
. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ฐ์ ์์๊ฐ ๋ ๋์์ผํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ์ผ๋ถ๋ docker-compose.yml
์์ ํ๋ ์ฝ๋ฉ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ํด์ผํฉ๋๋ค.
์๋ ํ์ธ์,
์ฐ์ ,์ด ์ผ์ด์ค๋ฅผ ์ฐพ์ ์ฃผ์ @dnephin ๊ณผ @ shin-์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. @ shin-์ด ์ ์ถ ํ ๋ณ๊ฒฝ ์ฌํญ์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ํ๋ฅญํ ๋จ๊ณ๋ก ๋ณด์ ๋๋ค.
๋ค์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ํ
์คํธ ํ๋ก์ ํธ์์ PR 5378์ ๊ฒ์ฆํ์ต๋๋ค. A default project name defined by the project, that can be checked in
(https://github.com/docker/compose/issues/745#issuecomment-282858900). ์ด๋ฅผ ์ํด ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ฃผ๋ git repo๋ฅผ ๋ง๋ค์์ต๋๋ค : https://github.com/estarter/compose_745
์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ค๋ฃจ๋ PR # 5378์ ์ฐพ์์ต๋๋ค. ๋ฌธ์ ๋ ์๋ฃจ์
์ COMPOSE_X_PROJECT_NAME
env ๋ณ์๊ฐ ํ์ํ๋ค๋ ๊ฒ์
๋๋ค. ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ
:
.env
ํ์ผ์ ์๋ํ์ง๋ง docker-compose๊ฐ ๋ค๋ฅธ ์์น์์ ํธ์ถ๋๋ฉด ์๋ํ์ง ์์ต๋๋ค ( ๋ช
๋ น ์์ ์ฐธ์กฐ, ํ์ผ ์์ฑ ).defined by the project, that can be checked in
๋ํ ์๋ฃจ์
์ด ์๋๋๋ค.๋ฐ๋ผ๊ฑด๋ ์ฌ๊ธฐ์์ ๋ค๋ฃจ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํ ์ ์์์ผ๋ฉดํฉ๋๋ค.
๊ด๋ฆฌ์ ์ฌ๋ฌ๋ถ, docker-compose ํ์ผ์ ์ ํ์ project_name
์์ฑ์ ๋์
ํ PR # 5369์ ์ํด ์ ์ค ์ผ์ด์ค๊ฐ ์ด๋ป๊ฒ ํด๊ฒฐ๋๋์ง ๊ณ ๋ คํ์ญ์์ค. ์ด ์์ฑ์ ์ฐ์ ์์๊ฐ ๋ฎ์ง ๋ง ํ๊ฒฝ์ด๋ ์์
๋๋ ํฐ๋ฆฌ์ ์์กดํ์ง ์์ต๋๋ค.
- ๋ค๋ฅธ ์ต์ ์ด ์์ต๋๊น?
์ด ์ต์
์ docker-compose --project-directory <PATH>
(๋์ฒด ์์
๋๋ ํ ๋ฆฌ ์ง์ ). .env
ํ์ผ์์๋ ์๋ํด์ผํฉ๋๋ค.
๋ฏน์ค์ ๋ ๋ค๋ฅธ ๋ฏธ๋ฌํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด :
๋ด ์ฌ์ฉ ์ฌ๋ก์๋ ๋ ๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์๋๋ฐ, ํ๋๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ (๋น๋ / ๋ฐฐํฌ์ ์ฌ์ฉ๋จ) ์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ devop ์ฉ (Dockerfile, docker-compose.yml ๋ฑ ํฌํจ) ์ฉ์
๋๋ค.
ํ์ฌ ์ค์ ์์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ ์ฅ์๋ ๋ฃจํธ ./์ ์๊ณ devops ์ ์ฅ์๋ ํ์ ๋๋ ํ ๋ฆฌ ./devops/์ ์ฒดํฌ ์์๋ฉ๋๋ค.
์ด ์ค์ ์์ .env ํ์ผ์ ๋ค์๊ณผ ๊ฐ์์ผํ๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค.
docker-compose ๋ช ๋ น์ด ์คํ๋๋ ํด๋ (ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ)์ ์์ต๋๋ค.
(๋ฌธ์ ์ฐธ์กฐ)
๋ค์๊ณผ ๊ฐ์ด ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค. docker-compose -f devops/docker-compose.yml
๋ฌผ๋ก ์ฌ๊ธฐ์ -p ๋งค๊ฐ ๋ณ์๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ์ด๋ ํ์ฌ ์ฌ์ฉํ๊ณ ์์ง๋ง ์์์ ์ธ๊ธ ํ ๊ฒ์ฒ๋ผ ์ฌ๋์ ์ค์๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
.env (๋๋ ์ ์ ๋ docker-compose.env) ํ์ผ์ docker-compose.yml์ด์๋ ๋์ผํ ๋๋ ํ ๋ฆฌ์์ ์ฝ์ ์ ์๋ค๋ฉด ๊ฑฐ๊ธฐ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ๊ฒ์ด ํจ๊ณผ์ ์ ๋๋ค.
docker-compose.yml ๋ด์์ env_file ์ง์๋ฌธ์ ์ฌ์ฉํ๋ฉด ์๋ํ์ง ์์ต๋๋ค. ํด๋น env ๋ณ์๋ ์ปจํ ์ด๋ ์์ฑ์ด ์๋ ์ปจํ ์ด๋ ๋ด๋ถ์๋ง ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ๋ด ๋ชฉํ๋ ์ค์ ํ๋ก์ ํธ ์ฝ๋ ๊ธฐ๋ฐ์ ์ค์ผ์ํค์ง ์๋ ๋ฐฉ์์ผ๋ก devops ๊ด๋ จ ํ์ผ์ ์์ฒด ํฌํจ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด์ง๋ง ํด๋น ์ ์ฅ์์ ๋ณ๋ ฌ๋ก ์ก์ธ์ค / ์คํํ ์ ์์ต๋๋ค.
์ด ์ต์ ์ด ์์ต๋๋ค docker-compose --project-directory
(๋์ฒด ์์ ๋๋ ํ ๋ฆฌ ์ง์ ). .env ํ์ผ์์๋ ์๋ํด์ผํฉ๋๋ค.
@ schmunk42 ๋ ์ข์ ์ท์ด ๋ ์ ์์ง๋ง --project-directory
๋ .env ํ์ผ์์ ์๋ํ์ง ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์๋ํ์ง๋ง .env ํ์ผ์ด ๋ฌด์๋์์ต๋๋ค ( project files ).
docker-compose -f PR_5378/docker-compose.yml -f PR_5378/docker-compose2.yml --project-directory PR_5378 down
์์ผ๋ก๋ ๊ฑด์ค์ ์ธ ๋ฐฉ์์ผ๋ก ๋ํ์ ๊ธฐ์ฌํ์ง ์๋ ๋๊ธ์ ์ญ์ ํ ๊ฒ์ ๋๋ค. ๋๋ ์์ด๋ค๊ณผ ์ํธ ์์ฉํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
์ค์ ๊ฐ๋ฅํ .env
์ด๋ฆ
์ฌ์ฉํ .env
ํ์ผ์ ์ง์ ํ๋ ํ๊ฒฝ ๋ณ์๊ฐ์๋ ๋ฌธ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ ์ข
์์ฑ์ด๋ผ๋ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ๋ ํ๊ฒฝ ๋ณ์๊ฐ ํด์๋๋ ๋ฐฉ์์ ์์ธ๋ฅผ ๋์
ํด์ผํ๋๋ฐ, ์ด๋ ํฉ๋ฆฌ์ ์ด์ง๋ง ๋ณธ์ง์ ์ผ๋ก ๋ฐ ์ง๊ด์ ์
๋๋ค.
.env
์ด๋ฆ ์์ฒด
.env
์ด๋ฆ์ ์ฌ๋ฌ ์ํํธ์จ์ด ๋ฐ ํ๋ ์ ์ํฌ์์ ์ฌ์ฉ๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฒ์ ์ ์ด์์ ์ปค๋ฐ๋์ง ์์์ด ๋ถ๋ช
ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋งค์ฐ ๋ฏผ๊ฐํ์ง๋ง ์ ์๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๋์ฒด ์ด๋ฆ (์ : docker-compose.env
)์ .env
ํ์ผ๋ก ๋์ฒด ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์์ฑ ํ์ผ์ project_name
์ถ๊ฐ์
์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ด์ ๋ํ ์
์ฅ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ์ต๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ ๋ฐ๋ํ๋ ๋ช ๊ฐ์ง ์ด์ ์ ๋ํด์๋ Daniel์ ์ต๊ทผ ์๊ฒฌ ์ ์ฐธ์กฐํ์ญ์์ค. ์ด๋ ค์ด ๊ฒ์ด ์๋๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ์ง ์์ ๊ฒ์ด ์๋๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ํ๊ฐํ๋ ๋ฐ ๋ง์ ์๊ฐ์ ๋ณด๋๊ณ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ ๋นํํ๊ธฐ์๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ก์ ํธ์ ํ์ง์ด ๋๋ฌด ๋ง์ด ๋จ์ด์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค (์ด ํ์์ผ๋ก). ํ์ค์ ์ผ๋ก ๋งํ๋ฉด # 5378์ ์๋ง๋ ์ตํธ ์ธ ๋ฐ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋๋ก ํ ์์๋ ์ต์์ ์๋ณด ์ผ ๊ฒ์
๋๋ค (ํธ์ง : ๋ฌผ๋ก ์ด๋ฌํ ๋งค๊ฐ ๋ณ์ ๋ด์์ ํด๋น ์ ์์ ๊ฐ์ ํ๋ ์ ์์ ์ด๋ ค ์์ต๋๋ค).
--project-directory
์ฝ๊ฐ์ ์ ์ ์ด์ง๋ง ์ง๊ธ์์ด ์ต์
์ด ์ฝ๊ฐ ๊ณ ์ฅ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๋์ด์ผ ๋ณด๋ฉด ํด๊ฒฐํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ ํ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ณ ์น ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์๊ฐ์ ํ ์ ํ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ ๋ง ๋ฏฟ์ ์ ์๊ฒ ๋ง๋๋ ์ด์ํ ์ฃ์ง ์ผ์ด์ค๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์์ต๋๋ค.
ํ์ง๋ง docker-compose.env
+ # 5378์ด ๋ง์กฑ์ค๋ฝ์ง ์์ ์๋ฃจ์
์ด์๋ ์ฌ๋์ด ์์ต๋๊น? ๋๋ ๊ทธ๊ฒ์ด ๋น์ ์ด ์ ํธํ๋ ํด๊ฒฐ์ฑ
์ด ์๋ ์๋ ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง, ๋น์ ์ด ๋์ฒํ ์์๋ ํฉ๋ฆฌ์ ์ธ ์๋ณด๋ฅผํ๊ณ ์๋์ง ๋ฌป์ต๋๋ค.
๋๋ด์ ์ ์ณ๋๊ณ ...
๋๋ ์์ง๋ Daniel์ ์ต๊ทผ ์ฝ๋ฉํธ ๊ฐ "ํ๋ก์ ํธ์ ํ์ง"๊ณผ ์ด๋ป๊ฒ ๊ด๋ จ๋์ด ์๋์ง ์ดํดํ์ง ๋ชปํ๋ค. ๋ํ ์ฌ์ ์ ํค๋ฅผ ์ถ๊ฐํ๋ฉด ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด ์์๋์ง ์์์ผํ๋ค๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๊ฒฝํ ๊ท์น์ ๋๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ ์ด๊ฒ์ด ์ฌ์ค์ด ์๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ ํ ๊ฒฝ์ฐ๊ฐ ํญ์ ์์ต๋๋ค.
ํ๋ก์ ํธ์ "์ด๋ฆ"์ด ํด๋ง์ ์ฌ๋ฌ ์ธก๋ฉด์ ๊ธฐ๋ณธ์ด๋๊ธฐ ๋๋ฌธ์ project-name
(๋๋ ๋ค๋ฅธ) ํ๋๋ฅผ ์ํ๋ ์บ ํ๊ฐ ์ ๋นํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ์บ ํ์ ์ฌ๋๋ค์ ํ๊ฒฝ ๋ณ์ ๋๋ ํ๋๊ทธ์ ๊ฐ์ ๋ช
๋ น๊ณผ ๊ฐ์ ๋ ๋ง์ ์์ ์๋ฃจ์
๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด์ด ์ด๋ฆ์ ๋ ์ด๋๊ฐ์ ๊ฐ๋จํ ์ ์ด๋๊ธฐ๋ฅผ ์ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๊ฑด์ค ์ ์ด๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@estarter ๋๋ ์ด๊ฒ์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค. ์๋ง๋ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ค์ ๋ก PR_5378
๋๋ ํ ๋ฆฌ์ .env
ํ์ผ๊ณผ ํจ๊ป ์๋ ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
docker-compose --project-directory PR_5378 -f docker-compose.yml -f docker-compose2.yml down
Compose ํ์ผ์ project_name ์ถ๊ฐ์
@ shin- ์ด๋ฏธ ๊ฒฐ์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๋ฐฐ๊ฒฝ์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํฉ๋๋ค. ๋๋ ์ ์ ์ด๊ฒ์ ๋ฌผ์๊ณ ๋๋ต์ ์ป์ง ๋ชปํ์ต๋๋ค (์ด๊ฒ์ด ํ ๋ก ์ด ๋์๊ฒ ๋๋ฌด ์ง์ฆ๋๋ ์ด์ ์ค ํ๋์ ๋๋ค).
์ฐ๋ฆฌ๊ฐ ์ ๋น์ ์ ๋๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ ๊ธฐ์๊ฒ ํ ์ container_name
๋ ๋ฐ network
์์ docker-compose.yml
? ์ฒซ ๋ฒ์งธ๋ ์ ์ฌ์ ์ธ ๊ฐ๋ฑ์ ์์ธ์ด ๋ ์๋ ์์ต๋๋ค. ํ์๋ ๋งค์ฐ ํธ์คํธ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๋น์ ์ ๋
ผ๋ฆฌ์ ๋ฐ๋ผ ๊ทธ ๋ (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒ)๋ ๊ฑฐ๊ธฐ์ ์์ด์๋ ์๋ฉ๋๋ค. project_name
์ ์ฐจ์ด๋ฅผ ๋ณด์ง ๋ชปํ์ต๋๋ค.
์ด ์ง๋ฌธ์ ๋ค์ ๋ฌด์ํ์ง ๋ง์ญ์์ค.
@ michael-k project_name
์ด container_name
์ (๊ณผ) ๋์ผํ๋ค๋ ๋ง์
๋๊น? ๊ทธ๋ ๋ค๋ฉด ํ๋์ ํ๋ก์ ํธ๊ฐ ์ฌ๋ฌ ์ปจํ
์ด๋๋ก ๊ตฌ์ฑ ๋ ์ ์์์ ์๋ ค ๋๋ฆฌ๊ณ ์ํฉ๋๋ค. ์๋๋ฉด ๋ด๊ฐ ๋น์ ์ ์คํด ํ์ต๋๊น?
network
๊ฒฝ์ฐ ๋ฐ๋์ ํธ์คํธ์ ํ์ ๋๋ ๊ฒ์ ์๋๋๋ค. ํ๋์ ์ปจํ
์ด๋๊ฐ ๋ค๋ฅธ ๋คํธ์ํฌ์ ์ํธ ์์ฉํ๋ ์ค์ ๊ฒฉ๋ฆฌ ๋คํธ์ํฌ๊ฐ ํ๋ก์ ํธ์ ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ตฌ์ฑ์ docker-compose.yml
๋ฉ๋๋ค.
@AyushyaChitransh ๋น์ ์ ์คํด. ์ง๋ฌธ์ : container_name
, network
๋ฐ docker-compose.yml
์๋ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ์๋ ๋ฐ๋ฉด project_name
๋ ์ฌ๊ธฐ์ ์์ผ๋ฉด ์๋๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ด๋ค์ ๋ชจ๋ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ผํ๊ฑฐ๋ ๊ณต์ ํด์๋ ์๋๋ ํธ์คํธ ํน์ ๊ตฌ์ฑ์ ๊ณต์ ํฉ๋๋ค.
@aanand ๋๋์ด ๊ธฐํ์ ๋ํด ์๊ณ ์์ต๋๋ค. ๋ํ ์ปจํ ์ด๋ ์ด๋ฆ์ ๋ํด์๋ ๋๊ฐ์ด ๋งํ ์ ์์ง๋ง compose ํ์ผ์์ ์ปจํ ์ด๋ ์ด๋ฆ์ ์ค์ ํ ๊ธฐํ๊ฐ ์์ต๋๋ค.
์,ํ์ง๋ง ์ถ๊ฐํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋๋๋ค.
๊ด๋ จ ํ ๋ก ์์ docker-compose ํ์ผ์ ๋คํธ์ํฌ ์ด๋ฆ์ ์ง์ ํ์ญ์์ค .
@estarter ๋๋ ์ด๊ฒ์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค. ์๋ง๋ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ต๋๋ค.
@ schmunk42 ๋๋ ๊ด๋ฆฌ์๊ฐ ์ด๊ฒ์ ์๊ณ ์๋ค๋ ๊ฒ์ ์ ์ฃผ์ ์์ On --project-directory
์ # 4709, # 4933 ๋ฐ # 4841์ ์ฐธ์กฐํ์ญ์์ค.
์ค์ ๋ก PR_5378 ๋๋ ํ ๋ฆฌ์ .env ํ์ผ๊ณผ ํจ๊ป ์๋ ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
docker-compose --project-directory PR_5378 -f docker-compose.yml -f docker-compose2.yml down
--project-directory
-f
๋งค๊ฐ ๋ณ์์ ์ํฅ์ ์ค๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค.
์ฌ์ค ๊ทธ๋ ์ง ์์ต๋๋ค.์ด ๋ช
๋ น์ IOError: [Errno 2] No such file or directory: u'./docker-compose.yml'
--project-directory
๊ฐ -f
์ํฅ์์ฃผ์ง ์๋๋ค๋ ๊ฒ์ด ๋งค์ฐ ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด --project-directory
๋ฐ ์ฌ๋ฌ ๊ฐ์ docker-compose ํ์ผ์ ๋ชจ๋ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์
๋ชฝ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์์ํด๋ณด์ญ์์ค.
๋ด๊ฐ ํด๊ฒฐ ๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ๋ํด ๋๋ฌด ๋ง์ ๊ณ ๋ฏผ์ํ๋ ๊ฒ์๋ณด๊ณ ๋งค์ฐ ๋๋์ต๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ๋ณธ ์ฐ์ ์์์ ๋๋ค.
project_name
ํ์ฌ ์ต์
# 1 ๋๋ ์ต์
# 4๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ๋๋ค์ด ์ง๋ฉด ํ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์ด๋ฉฐ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ ๋ฐฉ์์ผ๋ก ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋์์ด๋์ง ์์ ์๋์๋ ์์์ฑ์ ๋ํ ์ฒ ํ์ ์ฃผ์ฅ์ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ฉด์ ๋งค์ฐ ์ผ๋ฐ์ ์ธ OSS ๊ณ๋จ์ ๊ตฌ์ฑ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋์์ด๋์ง ์์ ์๋์๋ ์์์ฑ์ ๋ํ ์ฒ ํ์ ์ฃผ์ฅ์ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์ฃผ์ฅ์ ๊ฐ๋ ๊ฒ์ ์ค์ ๋ก ๋ชฉ์ ์ด ์๋๋๋ค. ์ฒ์๋ถํฐ ์ฐ๋ฆฌ๋ Compose ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ์ฐ๋ฆฌ๊ฐ ์ด๋์ ์ ์๋์ง์ ๋ํด ๋งค์ฐ ๋ถ๋ช ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ํด ํฌ๋ช
ํ๊ฒํฉ์๋ค. docker-compose
์์๋ ์ ๋๋ก ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด์ด ๋ฌธ์ ์ ๋ํด ๊ธฐ๊บผ์ด ๋ฐ์ ๋ค์ผ ์ ์ผํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ผ๋ฉด ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ ์ง์ ์ํํ๋ OSS ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ผ์ผํฉ๋๋ค. ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋งค์ฐ ๊ด๋ ํ ๋ผ์ด์ ์ค๋ก ๊ณต์ ๋ฉ๋๋ค.
์ ์ฐ๋ฆฌ๊ฐ docker-compose.yml์ container_name๊ณผ ๋คํธ์ํฌ๊ฐ ์๋์ง ์ดํดํ๋๋ก ๋์ ์ฃผ์๊ฒ ์ต๋๊น? ์ฒซ ๋ฒ์งธ๋ ์ ์ฌ์ ์ธ ๊ฐ๋ฑ์ ์์ธ์ด ๋ ์๋ ์์ต๋๋ค. ํ์๋ ๋งค์ฐ ํธ์คํธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋น์ ์ ๋ ผ๋ฆฌ์ ๋ฐ๋ผ ๊ทธ ๋ (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒ)๋ ๊ฑฐ๊ธฐ์ ์์ด์๋ ์๋ฉ๋๋ค. project_name์ ์ฐจ์ด์ ์ ๋ณด์ง ๋ชปํ์ต๋๋ค.
container_name
์ ๊ฒฝ์ฐ์ด ์ต์
์ ํ๋ก์ ํธ ์๋ช
์ด๊ธฐ์ ๋์
๋์์ต๋๋ค. @ schmunk42๊ฐ ์ง์ ํ๋ฏ์ด ์ฐ๋ฆฌ๊ฐ ๋ค์ ํ๋ฒ ๋ฐ๋ณตํ๋ค๋ฉด ์ด๊ฒ์ ํ์คํ ์ฌ์์ ํฌํจ๋์ง ์์ ๊ฒ์
๋๋ค. ์ง์์ ์ผ๋ก ์ค์ฉ๋๊ณ ์์ผ๋ฉฐ ์๋
๋์ ์ฌ์ฉ์์๊ฒ ์๋ง์ ๋ฌธ์ ์ ์์ธ์ด๋์์ต๋๋ค.
network
, ๊ทํ์ ๋ง์์์ ์ด๋ป๊ฒ ๋น๊ต๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๊น?
์ ๊ฐ ์ธ๊ธ ํ 4 ๋ฒ ์ต์
์ ์ด๋ป์ต๋๊น? ๋ก์ปฌ ๋๋ ํ ๋ฆฌ ํน์ ์ค์ ์ ๋ํด .docker-compose
์ ๋์
ํ๋ ์ด์ผ๊ธฐ๋ฅผ ๋ณด์์ต๋๋ค. ์ด๊ฒ์ _x_
ํ๊ฒฝ ํ๋๊ทธ (์ฌ์ ํ ํ๊ฒฝ ๊ด๋ฆฌ๊ฐ ํ์ํจ)๋ฅผ ๋์
ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ฐ๋์งํฉ๋๋ค (imo).
๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# <my-project-dir>/.docker-compose
project_name: foobar
์๋ ํ๊ฒฝ ๋ณ์ ์ต์ ๊ณผ ๋ค๋ฅด๋ฉฐ ์ฐ์ ์์ ๋ชฉ๋ก์์ ๋ ๋ฎ์ต๋๋ค.
์ด๊ฒ์ ๋ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฉ์ง๊ฒ ํด๊ฒฐํ๊ณ ๋ชฉ๋ก์์ ๋ค๋ฅธ ํ์ค ๊ตฌ์ฑ ๊ฒฝ๋ก๋ฅผ ์ ํํฉ๋๋ค.
@thedeeno ์ฐ๋ฆฌ ๋ง์ ์์์ .env
ํ์ผ ๋ด์ COMPOSE_PROJECT_NAME
๋ ์ด๋ฏธ์ด๋ฅผ ์ํํฉ๋๋ค (๊ฐ์์์๋ ๊ฒ๊ณผ ๋์ผํ ์ฐ์ ์์๋ก). ๊ทธ๋ฌ๋ .env
์ ๋ํด ์๋ชป๋ ์ด๋ฆ ์ ํ์ด๋ผ๊ณ ๋ค์์ต๋๋ค. ๋ฐ๋ผ์ docker-compose.env
๋ฅผ ๋์์ผ๋ก ๊ณ ๋ คํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ ๋น์ ์๊ฒ ํจ๊ณผ๊ฐ ์์ต๋๊น?
์ฐ๋ฆฌ ๋ง์์ .env ํ์ผ ๋ด์ COMPOSE_PROJECT_NAME์ ์ด๋ฏธ
@ shin- ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋์ํ์ง ์๋ ๊ณณ์ ๋๋ค. ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก .env
ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ ๋ก์ปฌ ๋น๋ฐ ๋ฐ ๊ธฐํ ๋ก์ปฌ ํ๋์จ์ด ํน์ ๊ตฌ์ฑ์ ๋ฃ๋ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์ฅ์์
๋๋ค.
์ด๋ ์์ number 3
ํ๊ฒฝ ๊ธฐ๋ฐ ๊ตฌ์ฑ์ ์ง์ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
ํ๊ฒฝ์ด ํ๋ก์ ํธ ์ด๋ฆ์ ์์ ํ์ง ์๊ธฐ๋ฅผ ์ํ ๋ ์ด์ค์ผ์ดํ ํด์น ( number 4
)๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ์์ ์ .env
ํ์ผ (VC ์๋)์ ๊ฐ๊ฒ๋ฉ๋๋ค. docker-compose.yaml
์ ์ฃผ์
ํ ๋น๋ฐ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด๊ฑฐ ๋๋ฌด ์ข์.
๊ทธ๋ฌ๋ ์ผ๋ถ ๋๊ตฌ์ ๊ฐ๋ ฅํ๊ฒ ๊ฒฐํฉ๋์ด ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ์ดํ๋ โโ๊ฒ์ ์ํ์ง ์์ต๋๋ค. .env
๋ ๋ฒ์ ๊ด๋ฆฌ์ ํฌํจ๋์ง ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ์ด ์ ๊ทผ ๋ฐฉ์์ผ๋ก COMPOSE_PROJECT_NAME
๋ฅผ ์๋์ผ๋ก ์ค์ ํด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋น๋ฐ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฒ๋ค์ฒ๋ผ _one thing_์
๋๋ค.
์ฌํ๊ฒ๋ ์๋์, .env
์ ๊ธฐ๋ณธ ์์ค ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ฌ๊ธฐ์ ๋์์ด๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ค์ ๋ก .env
์ด ์๋์ผ๋ก ์์ฑ๋๋ค๋ ์ ์ ์ข์ํฉ๋๋ค. ๊ทธ๋ฐ ์์ผ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ค์ต์์ ํ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
.env
ํ์ผ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋ฒ์ ์ ์ง์ ํ๊ณ ์ด์ํ sed / awk / perl / whatever ๊ตฌ๋ฌธ ๋ถ์์ ํผํ๊ธฐ ์ํด CI์ ๊ฐ์ ๋ฎ์ด ์๋๋ค.
echo APP_VERSION=$CI_COMMIT_REF_NAME > .env
docker-compose pull
docker-compose up -d
๋์ค์ docker-compose.yml
์์ ์ด๋ฏธ์ง๋ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ๋ฉ๋๋ค.
image: my.registry.example.net/app:${APP_VERSION}
์ด์ ๊ทธ๋ฐ ์ข
๋ฅ์ ๋ณ์๊ฐ ๋ ํ์ํ๋ฉด ์ฌ๋ฌ .env
ํ์ผ์ด ์ง์๋์ง ์๋ ํ ์ผ๋ถ ๊ตฌ๋ฌธ ๋ถ์์ ์ํํด์ผํฉ๋๋ค.
๋ฐ๋ผ์ docker-compose.env.d/*
๋๋ .docker-compose.env.d/*
๋๋ docker-compose.d/*
์ ๊ฐ์ "๋๋ ํ ๋ฆฌ"์ง์์ ์ถ๊ฐ ํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ glob์ ํธ์ง๊ธฐ ๋ฐฑ์
( *~
, *.bak
)๊ณผ ์ผ์นํ๋ ๋ฌธ์ ๋ฅผ ์ฆ์ ์์ฑ ํ ์ ์์ผ๋ฏ๋ก ๋์ ์ผ๋ถ ํ์ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. docker-compose.env.d/*.sh
...ํ์ง๋ง ๋ค์ docker-compose.yml
๋ฃจํธ ์์ค์ .env
ํ์ผ์ด๋ก๋๋๋ docker-compose.yml
์์ ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ฑฐ๋ ์นํจ-๋ฌ๊ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๊น? ๊ตฌ์ฑ ํ์๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. :)
์ฝ๊ฐ์ ์ฃผ์ ๋ฅผ ๋ฒ์ด ๋ฌ์ง๋ง COMPOSE_PROJECT_NAME
env๋ ์ ๋์ฌ๋ฅผ ์์ ํ ์ ์ด ํ ์ ์์ต๋๋ค. A-Za-z0-9_
์ ์ผ์นํ๋๋ก ์ฌ์ ํ ์ ๊ฑฐ๋ฉ๋๋ค. ์ ๋์ฌ์ -
๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์์ต๋๋ค. (์ง๊ธ์ด ๋ฌธ์ ๋ฅผ ์ ๊ณ ํ ์์น๋ฅผ ์ฐพ์ ์ ์์ง๋ง ์ํ ํฌ๋ ํด๊ฒฐ๋์ง ์์์ต๋๋ค)
docker ์์ฒด๊ฐ ์ ํํ๋ ๋์ผํ ๋ฌธ์๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ ๋๋ค.
@glensc ํ๊ฒฝ์ ๊ด๋ฆฌํ๊ธฐ์ํ ๋ง์ ์ธํ๋ผ์
๋๋ค. ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ทธ๊ฒ์ด docker-compose
์ ์ฑ
์์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ํ๋ก์ ํธ์์ ๋ดค๋ ๊ฒ์ ์๋์ผ๋ก .env
์์ฑํ๋ ๊ฒ๋ฟ์
๋๋ค.
@glensc @thedeeno ์ด์์ ์ผ๋ก๋ ๋ ๊ฐ์ *.env
ํ์ผ์ด ์๋๋ฐ, ํ๋๋ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ๊ธฐ์ํ ๊ฒ์ด๊ณ , ํ๋๋ ๋น๊ณต๊ฐ๋ก ์ ์ง๋๊ณ , ๋ ํ์ผ์ด ๋์ผํ ๋ณ์๋ฅผ ์ ์ ํ ๋ ํ์๋ ์ ์๋ฅผ ์ฌ์ ์ํฉ๋๊น?
์ง๋์ฃผ ๋ด ๋๊ธ ์์ ๊ตฌ์ฑ ๊ฐ๋ฅํ .env
์ด๋ฆ์ ์ธ๊ธ ํ์ต๋๋ค.
๊ณต๊ฐ docker-compose.env
(๋น๊ณต๊ฐ .env
) ์๋ ์์ฑํ๋ ๋์)๋ ์ฐ๋ฆฌ์๊ฒ ํฐ ๋์์ด ๋ ๊ฒ์
๋๋ค!
์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ rc ํ์ผ์ฒ๋ผ ์ทจ๊ธํ๊ณ ์์ค ์ ์ด๋ฅผ ์ปค๋ฐํฉ๋๋ค.
๊ณต๊ฐ / ๊ฐ์ธ ํ๊ฒฝ ํ์ผ์ด ์์ผ๋ฉด ์ฌ๊ธฐ์ ์ธ๊ธ ๋ ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. -
ํ๋ก์ ํธ ์ด๋ฆ์ ํ์ฉ๋๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
@thedeeno @glensc ๊ณต๊ฐ ๋ ๊ฐ์ ์ฌ์ ์ํ๋ ๋น๊ณต๊ฐ ENV ํ์ผ์ด ํ์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
๋ณด์ ๋น๋ฐ์ ์ปจํ
์ด๋๋ก ์๋ ์ ๋ฌ๋์ง ์์ผ๋ฏ๋ก docker-compose.env
์ ์ํ๋ฉด ์๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ .env
ํ์ผ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ํ๋๋๋ก ์ํ ํ ์ ์์ต๋๋ค. ํ์ง๋ง docker-compose
์ ์คํ์ ์ปจํ
์ด๋์ ๋ํ ์ค์ ์ ํผํฉํ๋ ๊ฒ์ด ํผ๋์ค๋ฌ์ ๋ณด์
๋๋ค.
@ schmunk42 ๋๋ ๊ทธ ์ ์ค ์ผ์ด์ค๊ฐ ์์ผ๋ฏ๋ก ๊ฑฐ๊ธฐ์์ ๋ง์ ๋์์๋ฐ์ง ๋ชปํ ๊ฒ์
๋๋ค. ๋ฒ์ ์ ์ด์ project_name
๋ฅผ ์ปค๋ฐํ๋ฉด๋ฉ๋๋ค. docker-compose.env
์ด์ด๋ฅผ ํด๊ฒฐํฉ๋๋ค.
๋ ๋ฒ์งธ ๋จ๋ฝ์ ๋ฐ๋ฅด๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ฉ .env
๋น๋ฐ ๋ฐ ์๋์ผ๋ก ๊ทธ๋ค์ ์ฃผ์ฌํ๋ค docker-compose.yaml
.
@ schmunk42 https://github.com/docker/compose/issues/745#issuecomment -346491062
image
๊ฐ์ ๋ํด ${variables}
๋ฅผ ์ ์ ํ ์์น ๋ง .env
ํ์ผ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
@glensc ๋์ํฉ๋๋ค!
๊ทธ๋ฌ๋ ๋์ yml
ํ์ผ์ ๋ํ ํ์ฌ ์ฌ์ ์ ๊ธฐ๋ฅ์ ๋ง๊ฒ docker-compose.override.env
๋ฅผ ์ ์ํฉ๋๋ค.
docker-compose.env
docker-compose.override.env
docker-compose.override.yml
docker-compose.yml
๋ ๋ฒ์งธ ๋จ๋ฝ์ ๋ฐ๋ฅด๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋น๋ฐ์ .env๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ผ๋ก docker-compose.yaml์ ์ฝ์ ํฉ๋๋ค.
@thedeeno ๋๋ ๋น์ ์ด ์ด๊ฒ์ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
environment:
- ${SECRET_VAR_FROM_DOTENV}
docker-compose.override.env
์์๋ ๊ฐ๋ฅํด์ผํฉ๋๋ค. ๋๋ ๋ค์์ ์ํ ํ ์ ์์ต๋๋ค.
env_file:
- .env
๋ ๋ง์ docker-compose ํน์ ์ ์ํด .env๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํต๋ก?
.env์ ์๋ ์์ฑ์ ๊ฑด๋ ๋ฐ๋ฉด ๋ด
ํ์ ์ํฌ ํ๋ก์ฐ. ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ํด์ด ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋๋ ๊ฑฐ์ผ
์ฐ๋ฆฌ์ ๋น๋ฐ์ ๋ ๊ฐ (.env์ ๋น์ ์ด ์ ์ํ๋ ๋ค๋ฅธ ํ์ผ)์ ๋ฃ๊ธฐ
docker-compose๊ฐ .env๋ฅผ ๋ณด์ง ์๋ ๊ฒฝ์ฐ ์ฅ์.
2017 ๋
11 ์ 23 ์ผ ๋ชฉ์์ผ ์ค์ 1:15 Tobias Munk [email protected]
์ผ๋ค :
@glensc https://github.com/glensc ๋์ํฉ๋๋ค!
๊ทธ๋ฌ๋ ๋์ docker-compose.override.env๋ฅผ ์ ์ํ์ฌ
yml ํ์ผ์ ๋ํ ํ์ฌ ์ฌ์ ์ ๊ธฐ๋ฅ.docker-compose.env
docker-compose.override.env
docker-compose.override.yml
docker-compose.yml๋ ๋ฒ์งธ ๋จ๋ฝ์ ๋ฐ๋ฅด๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋น๋ฐ์ .env๋ฅผ ์ฌ์ฉํ๊ณ
docker-compose.yaml์ ์๋์ผ๋ก ์ฝ์ ํ์ญ์์ค.@thedeeno https://github.com/thedeeno ๋๋ ๋น์ ์ด ์ด๊ฒ์ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค :
ํ๊ฒฝ:
- $ {SECRET_VAR_FROM_DOTENV}
docker-compose.override.env์์๋ ๊ฐ๋ฅํด์ผํฉ๋๋ค. ์๋๋ฉด ๋น์
ํ ์ ์์ต๋๋ค :env_file :
- .env
โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/745#issuecomment-346538315 ๋๋ ์์๊ฑฐ
์ค
https://github.com/notifications/unsubscribe-auth/AAFIdxtbI7y3wW2TFa401Go6Msj0gC74ks5s5Q1vgaJpZM4DLBNs
.
๋ ๋ง์ docker-compose ํน์ ์ ์ํด .env๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํต๋ก?
๋ฐ๋์ ๊ทธ๋ ์ง๋ ์์ง๋ง BC docker-compose
๊ฒฝ์ฐ fig.yml
์ ๋์ผํ๊ฒ ๋ค๋ฅธ ํญ๋ชฉ์ด ์์ผ๋ฉด .env
๊ณ์ ๋ณผ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค.
.env
docker-compose.env
.env
docker-compose.override.env
.env
docker-compose.env
docker-compose.override.env
.env
๋ ๋ง์ง๋ง ๊ฒฝ์ฐ์ ์ฌ์ฉ๋์ง ์์ง๋ง ์ผ๋ถ ์ฌ์ฉ์๋ .env
๋ฅผ ๋์ฒด๋ก ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ์ฌ์ฉ์๋ ๋์ฒด๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฒ์ ๋ ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ์ง ์์์ต๋๋ค.
๋์๊ฒ .env๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํด์ผํฉ๋๋ค. ํน๋ณํ ์๋ฏธ๊ฐ์๋ ํ์ผ์
๋๋ค.
๋ ๋์ ์ํ๊ณ์์.
์ธ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ์ ํ์ผ์ ๋๋ค.
ํ์ํ ๊ฒ์ ๋ด ํ๋ก์ ํธ ์ด๋ฆ์ ์์ค ์ ์ด์ ์ปค๋ฐํ๋ ๋ฐฉ๋ฒ๋ฟ์
๋๋ค. ๋๋ํ์ง ์๋๋ค
ํนํ ๋ ์ ๊ตํ ๊ณ๋จ์ ํ๊ฒฝ์ ๊ด์ฌ
์กฐ์น. ์ฌ์ค์ด ํ๋ก์ ํธ ์ด๋ฆ ์ ๋ต์
ํ๊ฒฝ ๋ณ์๋ก ์ํํ์ญ์์ค.
๊ตฌ์ฑ ํ์ผ์ด ํ
์ด๋ธ์ ๋ฒ์ด ๋ฌ๊ณ ๋ด ์ปค๋ฐ ๋ฐฉ๋ฒ์ด์๋ ๊ฒฝ์ฐ
project_name์ด env ์บ์ค์ผ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๊บผ์ด ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋!
2017 ๋
11 ์ 23 ์ผ ๋ชฉ์์ผ ์ค์ 1:31 Tobias Munk [email protected]
์ผ๋ค :
๋ ๋ง์ docker-compose ํน์ ์ ์ํด .env๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํต๋ก?๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋์ง๋ง BC docker-compose๋ ์ฌ์ ํ .env๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๊ฒ์ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉฐ, fig.yml๊ณผ ๋์ผํฉ๋๋ค. ๋น๋ก ๊ทธ๊ฒ์
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ฒฐ์ ํ๊ธฐ๊ฐ ๊น๋ค ๋กญ์ต๋๋ค..env
docker-compose.env.env
docker-compose.override.env.env
docker-compose.env
docker-compose.override.env.env๋ ๋ง์ง๋ง ๊ฒฝ์ฐ์ ์ฌ์ฉ๋์ง ์์ง๋ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ์ง ์์์ต๋๋ค.
์ผ๋ถ ์ฌ์ฉ์๋ .env๋ฅผ ์ฌ์ ์๋ก ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ์ฌ์ฉ์๋
๋์ฒด.โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/745#issuecomment-346539891 ๋๋ ์์๊ฑฐ
์ค
https://github.com/notifications/unsubscribe-auth/AAFId95kZQIsiWp488JyPQOtGJju0OPbks5s5RFbgaJpZM4DLBNs
.
๋คํธ์ํฌ์ ๊ดํด์๋ ๊ทธ๊ฒ์ด ๋น์ ์ ๋ง์์์ ์ด๋ป๊ฒ ๋น๊ต๋๋์ง ์์ ํ ํ์ ํ์ง ๋ชปํฉ๋๊น?
@์ ๊ฐ์ด-
services:
web:
build: ./
networks:
- my_project_network_on_my_localhost
networks:
my_project_network_on_my_localhost:
external: true
docker-compose.yml
์ ๋ด ์ ์ฅ์์ ์ปค๋ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์๋ชปํ๊ณ ์๋ค๊ณ ์๊ฐํ์ญ์์ค. ํญ์ ํธ์คํธ ๋ณ ์ค์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ๋ก๋์
๊ฐ๋ฐ์์ ์๋นํ ๋ค๋ฅธ ๋ด์ฉ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ค๋ฅธ ํ์ ๋์ docker-project.yaml
์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ง๋ง "4 project.rc"์ ํฌ์
๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์๋ ๋ฌธ์ ๊ฐ ์ค๋ช
ํ๋ ๋ด์ฉ์
๋๋ค. ๋ด๊ฐ ์ฐ๋ คํ๋ ํ ํ๋ก์ ํธ ์ด๋ฆ์ ์์ฑ ํ์ผ์ ๋ฃ๋ ๊ฒ์ ๋ํ ๋
ผ์๋ ๋ณ๋์ ๋ฌธ์ ์ ์์ด์ผํฉ๋๋ค.
ํ์ํ ๊ฒ์ ๋ด ํ๋ก์ ํธ ์ด๋ฆ์ ์์ค ์ ์ด์ ์ปค๋ฐํ๋ ๋ฐฉ๋ฒ๋ฟ์ ๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโ๋ด๊ฐ ์ดํดํ์ง ๋ชปํ๋ ์ ์
๋๋ค. ํ๋์ ํ๋ ์ฝ๋ฉ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์๊ตฌํ ์ด์ ๊ฐ ์์ด์ผํฉ๋๋ค. ์ผ๊ด๋ ์ด๋ฆ์ ์์ํ๋ ์ธ๋ถ ๋๊ตฌ๊ฐ์๋ ๊ฒฝ์ฐ ํด๋น ๋๊ตฌ๊ฐ docker-compose
ํธ์ถํ๊ธฐ ์ ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
my_project_network_on_my_localhost
์ด (๊ฐ) ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ธ๋ถ ๋คํธ์ํฌ์์ ํ๋ก์ ํธ ์ด๋ฆ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์
๋๊น? ์์ฑ ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ์ผ์น ํ ํ์๋ ์์ต๋๋ค.
my_project_network_on_my_localhost๊ฐ ๋์๊ฒ ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ๋จ์ง ์์ผ๋ฟ์
๋๋ค. ํ๋ก๋์
์๋ฒ์ ๋ก์ปฌ ๊ฐ๋ฐ ์ปดํจํฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ์ค์ ์ด ์์ต๋๋ค. ๋ด docker-compose.yml
๋ค๋ฅธ ๋ง์ ์ค์ ๋ ์ ๊ธฐ์ ์ผ๋ก ํ๋ก๋์
๊ณผ ๋ค๋ฆ
๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก์ ํธ ํน์ ํญ๋ชฉ์ ๋น๋ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ํธ๋ฆฌํฐ ์ปจํ
์ด๋๊ฐ ์ ์๋์ด ์์ต๋๋ค.
๋ด๊ฐ ์ดํดํ๋ฏ์ด, ์ฒ์์ docker-compose
(๋๋ ๋ ๋์ fig
)์ ๊ธฐ๋ณธ ์์ด๋์ด๋ ๋ณต์กํ ์ปจํ
์ด๋ ์ค์ ์ ์ํด ๊ธด docker
๋ช
๋ น ์ค ์ต์
์ ๋ชจ๋ ๋ฉ์ง๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ์
๋๋ค. ๊ฐ๋จํ yaml ํ์ผ. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ต์
์ด ๋น ์ง ๊ฒ์ด ๋๋ฌด ์ด์ํ๊ฒ ๋๊ปด์ง๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๋ ์ด์ ์ฃผ์ ์์ด๋์ด๊ฐ ์๋๋ผ๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ ๋์น ๊ฒ ๊ฐ์ต๋๋ค.
๋ด docker-compose.yml์ ๋ค๋ฅธ ๋ง์ ์ค์ ๋ ์ ๊ธฐ์ ์ผ๋ก ํ๋ก๋์ ๊ณผ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก์ ํธ ํน์ ํญ๋ชฉ์ ๋น๋ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ ํธ๋ฆฌํฐ ์ปจํ ์ด๋๊ฐ ์ ์๋์ด ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋์ผํ ์ํฌ ํ๋ก๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ "์ผ๋ฐ์ ์ธ"docker-compose ์ ์๋ ๊ฑฐ์ ์๋ฌด๊ฒ๋ํ์ง ์์ง๋ง ๊ฐ๋ฐ, ํ
์คํธ, ์คํ
์ด์ง ๋ฐ ํ๋ก๋์
๊ฐ์ ์ค์ ๋ก ๊ณต์ ๋๋ ์ ์ผํ ๊ฒ์
๋๋ค.
๊ฐ๋ฐ ์ค์ ์ ์ฃผ์ ๋ถ๋ถ์ ๋ณ๋์ ํ์ผ์ ์ ์๋์ด ์์ผ๋ฉฐ ์๋ ๋ณํฉ์ .env ํ์ผ์ ํตํด ์ํ๋ฉ๋๋ค. ํ
์คํธ ์ค์ ๋ ๋์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ํด๋์ ์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
(cd tests && docker-compose up -d)
(cd tests && docker-compose ps)
(cd tests && docker-compose run php codecept run)
ํ ์คํธ๋ฅผ ์ํด ... ๋๋ ์ด๊ฒ
(cd production && docker-compose logs -f --tail 100)
ํ๋ก๋์
์ฉ (๋ณด๋์ค : ํ๋ก๋์
์์ DOCKER_HOST
๋ฅผ ์ ์ํ์ฌ ๋ค๋ฅธ ์ปดํจํฐ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ง๋ง docker-compose
๋ง์ผ๋ก ๊ฐ๋ฅ).
๊ทธ๋ฌ๋ ์, ํ์ผ์ด ์๋๋ผ ํด๋์
๋๋ค. ๋ ๊ณณ์์ cp .env-dist .env
๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ชป๋ ์์ฑ ํ์ผ๋ก ์คํจํฉ๋๋ค. ์ฌ์ค ์ ๋์ด IMHO ๊น๋ํ ์ํฌ ํ๋ก์ฐ๋ฅผ ๊ณต์ ํ๊ณ ์ถ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโ๋ด๊ฐ ์ดํดํ์ง ๋ชปํ๋ ์ ์ ๋๋ค. ํ๋์ ํ๋ ์ฝ๋ฉ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์๊ตฌํ ์ด์ ๊ฐ ์์ด์ผํฉ๋๋ค. ์ผ๊ด๋ ์ด๋ฆ์ ์์ํ๋ ์ธ๋ถ ๋๊ตฌ๊ฐ์๋ ๊ฒฝ์ฐ ํด๋น ๋๊ตฌ๊ฐ docker-compose๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@dnephin ์ด์ ๊ฐ ์์ต๋๋ค.
์, ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ ํธ๋ฆฌํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์๊ตฌ๋ฉ๋๋ค.
๋ค์์ ํ๋ ์ฝ๋ฉ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ๋์์ด๋๋ ํ ๊ฐ์ง ์์
๋๋ค. traefik์ docker ๊ตฌ์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก <service>.<project>.<domain>
ํ์์ผ๋ก ์ปจํ
์ด๋์ ๋ํ ํธ์คํธ ๊ท์น์ ์์ฑํฉ๋๋ค. ์ด ํ์์ ๋ณ๊ฒฝํ๊ธฐ ์ฝ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ docker-compose ์๋น์ค์ ๋์ผํ fqdns๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ์ ์ตํฉ๋๋ค. ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ a) ๋ณต์ ๋ณธ์ ํน์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์ฌ์ฉํ๋๋ก ๊ฐ์ b) traefik์ ๋ํ ๊ท์น์ ์๋์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด๋ฏ๋ก ์ ๋ก ๊ตฌ์ฑ ์ค์ ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค. ๋ ๋ค ์ง์ฆ๋.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ docker-compose๋ก ๋น๋ ๋ ์ด๋ฏธ์ง ์ฐธ์กฐ์
๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ๋ณด์ฅ ํ ์์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ณด์ฅ ํ ์ ์์ผ๋ฉฐ ์์ ์๊ฒ ์ฐธ์กฐ ํ ์ ์์ต๋๋ค. ๋ฌผ๋ก ๊ฐ ์ ์์ ๋ํด image_name
๋ฅผ ํ๋ ์ฝ๋ฉ ํ ์ ์์ง๋ง _ ๊ด์ต์ ์ฌ์ฉํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ _ ์์งํ ์ค๋ณต ๋ ๋๋์ด ๋ค์ง๋ง _ ๋ค๋ฅธ ํ์ผ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ํด๋ง์์ ๋งค์ฐ ๋๋ผ์ด ์คํจ๋ฅผ ๊ฒช์ ๊ฒ์ด๋ผ๋ ์ ๋ง ์ผ๋ คํฉ๋๋ค.
์ฌ๋ฌ๋ถ, ๋๋ฌด ๋ง์ ํ ๋ก ...์ด ์ํ๋ ์ด๋ป์ต๋๊น? .docker-compose
ํ์ผ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๊น?
์๋๋ฉด์ด ์ค๋ ๋์์ ๋ ๋ง์ ํ ๋ก ์ด ํ์ํ์ญ๋๊น?
ํ๋ก์ ํธ ์ด๋ฆ์ docker-compose.yml
ํ์ผ์ ์ ์ฅํ๋ ๊ฒ์ PyCharm๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํ ๋ ๋งค์ฐ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋์ผํ YAML ํ์ผ์ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ง๋ง ํ์ํ ๊ฒฝ์ฐ ์ฌ์ ์ ํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ํต์ฌ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ด๋ฆ์ด ๋จ์ํ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๋ค๋ ์ฌ์ค์์ ๋น๋กฏ๋ ๊ฒ ๊ฐ์ต๋๋ค (_naively_๋ผ๊ณ ๋งํด์ผํฉ๋๊น?). ์ด๋ ํ์ผ ์์คํ
์ด๋ฆ ๊ณต๊ฐ (๊ณ์ธต ์ )์ ํ๋ซ ์ด๋ฆ์ผ๋ก ํจ๊ณผ์ ์ผ๋ก ์์ถํ๋ ๊ฒ์
๋๋ค. ์ด๋ ์ด๋ฆ ์ถฉ๋๋ก ์ธํด ๋ฌธ์ ๊ฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ก ์ธํด ~/fooproject/master
๋ฐ ~/barproject/master
์์ ์๋น์ค๋ฅผ ์คํํ๋ ์ฌ๋๋ค์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋์ปค ๊ตฌ์ฑ์ ๊ฐ๋ ฅํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ์ฒด ๊ฒฝ๋ก (์ : home_flaviovs_fooproject_master
)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์์ฑํ๋ ๊ฒ์
๋๊น?
๊ทธ๋ฌ๋ ๋๋ ๋์ง๊ธด ์์ด๋์ด๋ฅผ ์ข์ํ๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ Git์ ์ปค๋ฐ ํ ์ ์๋ค๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค. ์๋ง๋ .env
์ ์ .env.default
ํ์ผ์ ์ฝ๋ ๊ฒ์ด ์ด๊ฒ์ ๋ํ ๊ฐ๋จํ ํด๊ฒฐ์ฑ
์ผ ๊ฒ์
๋๋ค (์ค๋๋ # 210๋ ์ฒ๋ฆฌ ํ BTW)?
Docker-compose ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ด ํจ์๋ก ๋ํํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ์ด๋์๋ ํจ์๋ฅผ ํธ์ถ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด .env ํ์ผ์ด๋ก๋๋๊ณ ์ด๋์์๋ ์ฌ๋ฐ๋ฅธ ๋์ปค ์์ฑ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
๋ถ๋ช ํ ์ด๊ฒ์ ํ์ฅํ์ฌ ํ๋ก์ ํธ๋ณ๋ก ๊ธฐ๋ฅ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋จ์ ์ด์์ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง ์์ง ๋ฐ๊ฒฌํ์ง ๋ชปํ์ต๋๋ค.
DEFAULT_DOCKER_COMPOSE=~/my-project
function dcompose() {
pushd $DEFAULT_DOCKER_COMPOSE &> /dev/null;
/usr/local/bin/docker-compose $@;
popd &> /dev/null;
}
## maintain auto complete
function _dc {
pushd $DEFAULT_DOCKER_COMPOSE &> /dev/null;
_docker_compose;
popd &> /dev/null;
}
complete -F _dc dcompose
์ด๋ฏธ์ง ์ถฉ๋์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ๋งค์ฐ ๋ ผ๋ฆฌ์ ์ด๊ณ ์ข์ ๋ณด์ด๋ ์๋ฃจ์ ์ผ๋ก ๋ณด์ด๊ธฐ ๋๋ฌธ์ docker-compose.yml์์ project_name์ ์ค์ ํ ์ ์๋ค๋ ๊ฒ์ด ์ ๋ง ์ด์ํด ๋ณด์ ๋๋ค. ์ค์ ๋ก ํ๋ก์ ํธ ํด๋์์ ์ด๋ฆ์ ๊ฐ์ ธ ์ค๋ ๊ฒ์ ๋์ ์๊ฐ์ด์์ต๋๋ค. ๋ง์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ํด๋๋ / home / project1 / repository, / home / project2 / repository ๋ฑ๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.์ด ๊ฒฝ์ฐ docker๋ repository_app๊ณผ ๊ฐ์ ์ด๋ฏธ์ง ์ด๋ฆ์ ์์ฑํ์ต๋๋ค.
@vedmant docker-compose.yml
์์ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๋ค. image
๋ฐ build
๋ฉ๋๋ค.
์ .. ์ด์ ๊ฐ์ ์ด๋ฆ์ ํด๋์์ ํ๋ก์ ํธ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
docker-compose -f /foo/bar up -d
docker-compose -f /foo/foo/foo/bar down
์๋ง๋ ์ด๊ฒ์ ์ด๋ฏธ ์ ์ ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์์ ์ฃผ์ ๋ณ๊ฒฝํ์ง version: 4
๊ณผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ ์ ์๋๋ก ๋ช ๊ฐ์ง ์๋ก์ด ํค์๋๋ฅผ ์ถ๊ฐ docker-compose.yml
?
๋ด .docker-compose / project-name์ด ์๋ํ์ง ์์์ต๋๋ค ...
-ํ๋ก์ ํธ ์ด๋ฆ์ด ์๋ ํจ
docker-compose.yml์์๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๊ณ ์ถ์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ์น ์ฑ๊ณผ postgress ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๊ฐ์๋ docker-compose.yml
ํ์ผ์ด ์์ต๋๋ค.
๋ํ ์์ ์์
์ ๋ํด ๋ณ๋์ docker-compose.yml
ํ์ผ์ ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก docker-compose๋ก ์กฐ์ ํ๊ณ ์ถ์ ์์ ์์
์ ์ค๋ช
ํฉ๋๋ค. ์ด๋ฌํ ์์ ์์
์ ์ฃผ ํ๋ก์ ํธ์์ ์ฌ์ฉ ๋ ๊ฒ๊ณผ ๋์ผํ ์๋น์ค / ๋คํธ์ํฌ / ๋ณผ๋ฅจ์ ํ์ฉํด์ผํฉ๋๋ค.
docker-compose๋ก ์กฐ์ ํ๋ ค๋ ์์ ์์
์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. postgress
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
. ์์
์ด ํด๋น ์์
์ ์ํํ๊ธฐ ์ํด ํ์ฌ ์๋น์ค์ ๋ณผ๋ฅจ, ๋คํธ์ํฌ ๋ฑ์ ์ถ๊ฐ๋ก ํ์ ํ๋ ์์
์ด ํฌํจ๋ ์ ์์ผ๋ฏ๋ก docker-compose๋ฅผ ์ฌ์ฉํ์ฌ์ด๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
๋ฐ๋ผ์์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์์
์ ๋ํ๋ด๋ ๋ณ๋์ docker-compose.adhoctask.yml
ํ์ผ์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ํ์ํ ๋๋ง ํด๋น ์์
์ ์คํํ ์ ์์ต๋๋ค. ์๋ docker-compose ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ ธ์ ๋์ผํ ๋คํธ์ํฌ, ๋ณผ๋ฅจ ๋ฑ์ ์ก์ธ์ค ํ ์ ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ๋ฌผ๊ฑด์ด ์๋ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ฌธ์ ๋์ด ์์ ์์
yml ํ์ผ์ด ์ฃผ docker-compose.yml
๊ณผ ๋์ผํ ์ต์์ ๋๋ ํ ๋ฆฌ (๋๋ ๋์ผํ repo)์ ์ด๊ณ ์ถ์ง ์์ ๋ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ์์
docker-compose.adhoc.yml
๋ฅผ ํ์ ํด๋์ ๋ฃ๊ณ DOCKERFILE
๋ฐ ์์
์ ํ์๋กํ๋ ์์ฐ์ ์์ ์ ๊ด์ฌ์ฌ๋ก ์ ๋ถ๋ฆฌ / ๊ทธ๋ฃนํ ํ ์ ์์ต๋๋ค. ํ์ ํด๋๋ก ์ด๋ํ์๋ง์ ํ๋ก์ ํธ ์ด๋ฆ์ด ๋ ์ด์ ์ผ์นํ์ง ์์ต๋๋ค. ์ด๋ ๋ ์ด์ ์ฃผ ํ๋ก์ ํธ์ ์ ์ ๋ ๋์ผํ ๋ณผ๋ฅจ / ๋คํธ์ํฌ ๋ฑ์ ์ก์ธ์ค ํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
docker-compose.yml
๋ฐ docker-compose.adhoc.yml
projectname
๋ฅผ ์ง์ ํ ์ ์๋ค๋ฉด-์ํ๋๋๋ก ๊ตฌ์กฐํ ํ ์ ์์ผ๋ฉฐ (๋ณ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฃ์ ์๋ ์์) ํ์์์ด ์คํํ ์ ์์ต๋๋ค. ์ง์์ ์ผ๋ก ์ถ๊ฐ ๋ช
๋ น ์ค ์ธ์๋ฅผ ์ง์ ํ๊ฑฐ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ํํฉ๋๋ค.
์ด๋ฆ ์ถฉ๋์ ์ผ์ผํค๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋์๊ฒ ์ง์ง ๋ฌธ์ ์ ๋๋ค.
๊ตฌ์กฐ์ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค.
/company
/ab # project prefix
/backend # actual project
/webapp
/cd
/backend
/webapp
์ด์ ํ๋์ ํ๋ก์ ํธ์์ docker-compose๋ฅผ ์์ํ๋ฉด backend_default
๋คํธ์ํฌ๊ฐ ์์ฑ๋๊ณ backend_
๋ช
์ ์ ์ผ๋ก ์ด๋ฆ์ด ์ง์ ๋์ง ์์ ์ปจํ
์ด๋์ ์ ๋์ฌ๋ฅผ ๋ถ์
๋๋ค. ์ด์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ค๋ฉด ์ค๋ฅธ์ชฝ ํด๋๋ก ๋์๊ฐ์ ๋จผ์ docker-compose down
๋ฅผ ์คํํ์ฌ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ ๋คํธ์ํฌ์์ ์ ์ปจํ
์ด๋๋ฅผ ์์ํ ๋ค์ ๋๋ฉด orhans์ ๋ํด ๋ถํํฉ๋๋ค.
๋์๊ฒ๋ ๋ฌธ์ ์ ๋๋ค. ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ์๊ณ ๋จ์ผ ์์คํ ์ ๋์ ๋ฐ๋ชจ ์คํ ๋, ์ง์ ๋น ์คํ ๋์ docker-compose๋ฅผ ์ฌ์ฉํฉ๋๋ค.
/project-1
/dev # docker-compose.yml inside
/master # docker-compose.yml inside
/feature
/new-feature # docker-compose.yml inside
/project-2
/dev # docker-compose.yml inside
/master # docker-compose.yml inside
๋ฐ๋ผ์ "๋ง์คํฐ"์ "๊ฐ๋ฐ์"๋ ํ๋ก์ ํธ๊ฐ์ ์ถฉ๋ํฉ๋๋ค. .docker-compose
ํ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
@simplesmiler ๋ฐ๋ณต ํ ์ํ์ด ์์ง๋ง .env
๋ ์ด๋ฏธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
@ shin- .env
๋ ๋ฒ์ ๊ด๋ฆฌ์์๋ ๋น๋ฐ์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
@simplesmiler ๊ฐ ์ํ๋ ๊ฒ์ .env
๋ฅผ ๋ฒ์ ์ ์ด _ ์ธ๋ถ์ ์ ์งํ๋ฉด์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ฒ์ ์ ์ด์ ์ปค๋ฐํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
๋ด๊ฐ ๋งํ ์์๋ ํ, ์ด๊ฒ์ ์ฝ๊ฒ ํ ์์๋ ๋ฐฉ๋ฒ์ ์์ง ์์ต๋๋ค.
@thedeeno ๋ ๊ฒ์๋ฌผ์ด ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ํจ๊ป ์ผํ๊ณ ์์ต๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ค๋ฅธ ์ฌ๋์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ช ์ ์ ์ผ๋ก ์์ฑ๋ ๊ฒ ์ด์์ด๋ผ๊ณ ๊ฐ์ ํด์๋ ์๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ํจ๊ป ์ผํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๊ทธ๋ค์ ๋ฌธ์ ์ ๋ํ ๋์ ํด์์ ๋๋ค. ์์ ํ ๊ณตํํ ์ง์ ์ ๋๋ค. ์ ๊ฐ ํ๋ ธ์ ์๋ ์๊ณ ์ถ์ธก ํ ์๋ ์์ต๋๋ค.
์ปคํผ๋ฅผ ๋ง์ค ์ ์๋๋ก ํจ๊ป ์ผํ์ผ๋ฉด ์ข๊ฒ ์ด์. ๋ด๊ฐ ์ฌ๊ธฐ์ ๋ฉ์ฒญํ๋ค๊ณ ์๊ฐํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋ง๋์ด ์ค๋ ๋๋ฅผ ์๋ชป ๊ธฐ์ตํ๊ณ ์์ ์ ์์ต๋๋ค. .env
๋ฌด์ํ๋ฉด์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ฒ์ ์ ์ด์ ์ปค๋ฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
.env๋ฅผ ๋ฌด์ํ๋ฉด์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ฒ์ ์ ์ด์ ์ปค๋ฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์๋๋ฉด ์ฌ์ ํ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ ๋๊น?
ํ์ฌ๋ ์๋๋๋ค. ๋ช ๋ฌ ์ ์ ์ธ๊ธํ๋ฏ์ด ^ 1, ๊ณํ์ ๋ฒ์ ์ ์ด์ ํฌํจ๋ ์์๋ ๋ณด์กฐ ํ๊ฒฝ ํ์ผ๋ก docker-compose.env
๋ฅผ ํฌํจํ๋ ๊ฒ์
๋๋ค. ์ฐ์ ์์ ๋ชฉ๋ก์์ ๋ค์ ๋ฏธ๋๋ฌ์ก์ง๋ง ๊ณง ์ป์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
1 / https://github.com/docker/compose/issues/745#issuecomment -345054893
์ข์ ์์์ ๋๋ค! PR ์๋ฝ?
์ค๋ ์ ์ ํฌ๋ง์ ํฌ๊ธฐํ์ง๋ง ๋ค์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์์๋ ๋ง์ ์ฌ๋๋ค์ด์ด ์ค์ ์ ์ํด ๋ ๋ฒ์งธ ํ์ผ์ ์ ์งํด์ผํ๋ ์ด์ ๋ฅผ ์ฌ์ ํ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ๋ฐ์ ๊ฐ์ด, ์ฌ๊ธฐ์์๋ ๋ช๋ช ์ฌ๋๋ค์๊ฒ๋ ํ๋ก์ ํธ ์ค์ ์ด ๊นจ์ง๋๋ค. ๊ทธ๋ฌ๋์ด ์ค๋ ๋์ ๋๋ค์์๊ฒ๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค . ๊ทธ๋ ๋ค๋ฉด ์์์ ์ฌ๋๋ค์ด์ด ๊ธฐ๋ฅ์ ๋์น๊ณ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์๊ฒ ์ด๋ป๊ฒ์ด ์ ํ์ ๋ถ๊ณผ ํ ์ ์์ต๋๊น? ์ด๋ฆ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์ต์ ์ด์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋
ผ๋ฆฌ์ ์ผ๋ก๋ ๋ง์ด๋์ง ์์ต๋๋ค. docker-compose.yml
์์ด ์ค์ ์ด ์๋ค๋ ๊ฒ์ด ๋๋ฌด ๋ช
๋ฐฑํด์ ๋งค๋ด์ผ์์์ด ์ต์
์ ์ฐพ์ ๋์ด ์ต์
์ด ์๋ค๋ ๊ฒ์ ๋ฏฟ์ ์๋ ์์์ต๋๋ค. ์ค์ ์ ๊ฑฐ์ ๋ชจ๋ ์ธก๋ฉด์ ์ฌ๊ธฐ์์ ๊ตฌ์ฑ ํ ์ ์์ต๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ ๊ตฌ์ฑ ๋ก์ง์ ๋ช
๋ฐฑํ ๋จ์ ์
๋๋ค.
docker-compose.yml
(๊ฑฐ์) ๋ชจ๋ ์ค์ ์ ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก "๋ฒ์ ์ง์ "๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
# 4841์์ ์ ์ํ๋ฏ์ด ์ฌ์ฉํ .env ํ์ผ (์ : --env-file
)์ ์ง์ ํ๋ ์ต์
์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
@roipoussiere ์ฐธ์กฐ https://github.com/docker/compose/issues/4841#issuecomment -414543951
๊ฐ์ฌํฉ๋๋ค @ schmunk42.
๊ทธ๋ฌ๋ ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
.
โโโ project_a
โย ย โโโ .env
โโโ project_b
โ โโโ .env
๋ค์๊ณผ ๊ฐ์ ๋ ์ฌ์ด ๊ฒ ๋์ ์ :
.
โโโ a.env
โโโ b.env
์, https://github.com/docker/compose/issues/745#issuecomment -345054893 ์ฐธ์กฐ- ๊ฐ๋ ์ฌ๊ธฐ์ ์จ๊ฒจ์ ธ ์๊ธฐ ๋๋ฌธ์ ์ ์ฐฝ์์ ์ด์ด์ผ ํ ์๋ ์์ต๋๋ค . : nerd_face :
์ ๋ --env-file
์ ์์ ๋ ๋ฒ์งธ๋กํฉ๋๋ค. ๊ทธ๊ฒ์ ์ํด ํฐ์ผ์ ๋ง๋ค์์ต๋๋ค. ์ด ์ต์
์ ์ํ๋ค๋ฉด ๊ฐ์ ์ข์ํ์ญ์์ค .
๊ทธ๋์ ์ ๋์ด ๋ฒ๊ทธ / ๊ธฐ๋ฅ์ ๋ํ ๋ช ๊ฐ์ ๋๊ธ ๋ง ์ฝ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋ก ์ด ๊ณ์๋๊ณ ์ด๋ ค ์๋ค๋ ์ฌ์ค์ ์ด๊ฒ์ด ์ฒ์์ผ๋ก ์ด๋ฆฐ ์ง 4 ๋ ์ด๋์๊ณ ์์ง ํด๊ฒฐ์ฑ ์ด ์๋ค๋ ๊ฒฐ๋ก ์ ๋ด๋ฆฝ๋๋ค. ๋ถ๋ถ์ ์ธ ๊ฒฐ์ ์ ๋ด๋ฆฐ ํ ์์ผ๋ก ๋์๊ฐ ์ ์์๊น์ ..?
์ด ๋ฌธ์ ์ ์ฒด์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋ชจ๋ ์ฝ์ง๋ ์์์ง๋ง์ด ์ฃผ์ ์ ๋ํด ์ธ๋ป๋ณด๊ธฐ๋ณด๋ค ๋ ๋ณต์กํ๊ฒ ๋ง๋๋ ํฅ๋ฏธ๋ก์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ ๋ชจ๋ ์๊ณ ์๋ฏ์ด .env
๋ ์ผ๋ฐ์ ์ผ๋ก ๋น๋ฐ ๊ฐ์ ์ฌ์ฉ๋๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ฒ์ ์ ์ด์์ ๋ฌด์ํฉ๋๋ค.
ํ์ง๋ง Stripe๋ก ์์ ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.์ด ์์ ์ ํตํด ํ ์คํธ ํค์ ๋ผ์ด๋ธ ํค AKA๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์์ ํ ํค 2 ์ธํธ. ๊ฐ๋ฐ ์ค์๋ ํ ์คํธ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋งค์ฐ ์ผ๋ฐ์ ์ด๋ฉฐ ํ๋ก๋์ ์์๋ ๋ผ์ด๋ธ ํค๋ฅผ ์ฌ์ฉํ๊ฒ๋ฉ๋๋ค.
์ด๋ ์๋์ผ๋ก .env
์์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ฐ ๊ฐ์ ์ฒ๋ฆฌ ํ ์ โโ์์์ ์๋ฏธํฉ๋๋ค. ๊ฐ ํ๊ฒฝ์ ๋ค๋ฅธ ํค๊ฐ ์๊ณ ํ์ผ์ ์คํํ๋ ๋์ ํ์ผ์ ๊ฐ์ ์ ํ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค. dev ๋๋ prod์ ์ฑ (๋ฏธ์น ๊ฒ์ด๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค).
์ต์ข
์ ์ผ๋ก๋ .env
๋ฐ .env.prod
ํ์ผ์ ๋ชจ๋ ๋ง๋ค๊ณ ๋ฒ์ ์ ์ด์์ ๋ ๋ค ๋ฌด์ํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๊ฐ๋ฐ์์ ํ
์คํธ / ๊ฐ๋ฐ ํค๋ฅผ ๋ณด์ ํ ๋ค์ ๊ฐ๋ฐ ์์ฑ ํ์ผ์์ env_file
๋ก ์ฐธ์กฐ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ๋ก๋์
์์ ํ๋ก๋์
์์ฑ ํ์ผ์์ .env
๋ฐ .env.prod
๋ฅผ ๋ชจ๋ ์ฐธ์กฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ด๋๋ก ๊ฐ๋์ง ์์ญ๋๊น? ํ์ฌ Docker Compose์์๋ ์ ํ์ env_file
ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ Docker Compose๋ฅผ ์คํํ๋ ค๊ณ ํ๋ฉด Docker Compose๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.
๋ฐ๋ผ์ env_file
์ ํจ๊ป ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ์๋์ผ๋ก .env
ํ์ผ์ด ์์ด์ผํ๋ฉฐ ์ด๊ฒ์ Stripe์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ๋ง์ ์น ํ๋ ์ ์ํฌ์๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ๊ฐ๋ฐ๊ณผ ํ๋ก๋์
๋ชจ๋์์ ๋ณ๊ฒฝ ๋ ์์๋ ํน์ ์ค์ ์ด ์์ต๋๋ค (์ : Flask์ ๊ฒฝ์ฐ SERVER_NAME
).
์ฆ, ๋ฒ์ ๊ด๋ฆฌ์ ์ปค๋ฐํ๋ .env_example
ํ์ผ๊ณผ ๊ฐ์ ํ์ผ๋ก ์ ํ๋๊ณ ์ต์ข
์ฌ์ฉ์๊ฐ ํด๋น ํ์ผ์ ์ด๋ฆ์ .env
๋ก ๋ณ๊ฒฝ ํ ๋ค์์ด ํ์ผ ๋ด๋ถ์ ์ฐ๋ฆฌ ์ค๋ ์น๊ตฌ COMPOSE_PROJECT_NAME
.
์ด์ ์ง๋ฌธ์ด ๋ํ๋ฉ๋๋ค. ์ค์ ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๊น? ๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ ๊ฒํ๋ค๊ณ ํ์ ํ์ง๋ ๋ชปํ์ง๋ง, ์ฌ์ฉ์ ์ง์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๊ฒ์ด ๋ชจ๋ ํ๋ก์ ํธ์์ ์ข์ ์๊ฐ์ด๊ฑฐ๋, ์ด๋ฆ ์ถฉ๋์ด ์ฝ๊ฒ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ ์ด๋ ํด๋ ์ด๋ฆ์ด ์๋ ๋ค๋ฅธ ์ด๋ฆ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ผ๋ถ ๋ก๋๋งต์์ด ๋ฌธ์ ๊ฐ ์์ต๋๊น?
์ด์ ๋ํ ์ ์ค ์ผ์ด์ค๋ ํ๋ก์ ํธ์ ์ฌ๋ฌ ๊ฐ์ docker-compose ํ์ผ์ด์๋ ๊ฒฝ์ฐ COMPOSE_PROJECT_NAME์ ์์ ํ๋ ๊ฒ์ ๋๋ค (์ : dev, test, ์๋ง๋ base, ์๋ง๋ ํ ์คํธ ๋ก์ปฌ ๋ฑ) ์๋ก ๋ถ๋ฆฌ ๋ 2 ๊ฐ์ ๋งค์ฐ ๋ค๋ฅธ ํ๊ฒฝ.
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ makefile์ COMPOSE_PROJECT_NAME์ ์์ฑํ์ฌ ์ด๋ฌํ ๋์ปค ๊ตฌ์ฑ ์ ํ์ ์ฐํ ํ ์ ์์ต๋๋ค.
compose yaml ์์ฒด ๋ด์์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค.
์์ง ์ด๋ ค ์์ต๋๊น? ์ธ์์...
๊ตฌ๋ ํ์ต๋๋ค. ๋ํ compose yaml ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค.
์์ํ๋ค ๐คฆโโ
์ด ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ๋งค์ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ ๊ฐ ์์ ์ค์ธ ํ๋ก์ ํธ์์ ๋งค์ฐ ํ์๋ฐ์ ๊ฒ์ ๋๋ค.
์ข์, ๊ทธ๋์์ด ๊ธด ์ค๋ ๋์์ ์ฐ๋ฆฌ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด docker-compose.yml ํ์ผ์ ์์ ๊ฒ์ด๋ผ๋ ๊ฒฐ๋ก ์ ๋ด๋ฆด ์ ์์ต๋๋ค. ๋ฉ์ธ ๊ฐ๋ฐ์๊ฐ ์ด์ ๋ฐ๋ํ๊ณ ๊ทธ๋ฌํ ํ ์์ฒญ์ ๋ณํฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์์ด ๋ฌธ์ ์ ๋งจ ์์์๋ ์๋ ์ ์์ผ๋ก ๋์๊ฐ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์๊ตฌ์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๊น? ํ์ผ .docker-compose ๋๋ ๋๋ ํ ๋ฆฌ .docker-compose๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ง์นจ๋ด ๊ทธ๊ฒ์ ๊ตฌํํ๋ ๋ฐ ์ฝ๊ฐ์ ์ง์ ์ ์ป์ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
ํด๋น ๋์ ๋ชฉ๋ก์ ENV ๋ณ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ชจ๋ ๋ถ์ผ์น์ ๊ทผ๋ณธ์ ์ธ ์์ธ์์ด ์ค๋ ๋ / ๋ฌธ์ ๊ฐ ENV ๋ณ์์ ์์ผ๋ฉด ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ๊ทธ๊ฒ์ repo์ ์ปค๋ฐ ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค (๋ฌผ๋ก ์ ํ ์ฌํญ, ํ์ค ๊ถ์ฅ ์ฌํญ์ ์ปค๋ฐํ์ง ์์ ์ ์์ต๋๋ค.)
yaml์ ๋ด์ฉ์ด ์๋ ENV๋ฅผ ๊ฐ๋ ๊ฒ์ ์๋ก ๋ค๋ฅธ ํ๋ก์ ํธ๊ฐ์ yaml ํ์ผ์ ๊ณต์ ํ๋ ์ฒ ํ๊ณผ ๋ชจ์๋ฉ๋๋ค. ์ค์ ๋ก ๊ณต์์ ์ผ๋ก ๋ฌธ์ํ๋์ด ์์ต๋๋ค : https://docs.docker.com/compose/extends/ (์๋ฅผ ๋ค์ด "์์ ์ฌ์ฉ ์ฌ๋ก"์ฐธ์กฐ). ๋จ์ผ ๊ธฐ๋ณธ yaml ํ์ผ์ ์ฌ์ฉํ๊ณ dev, test ๋ฐ prod์ ๋ํ ํ์ผ์ ์ฌ์ ์ํ๊ณ god๊ฐ ๋ค๋ฅธ ๊ฒ์ ์๊ณ ์๋ค๋ฉด ๋์ผํ ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก ์คํํ๊ฑฐ๋ ENV / cli๋ก ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. N์ด ์ ํจํ ๋์ N * N ์กฐํฉ์ ์์ฑํฉ๋๋ค.
๋๋ ์ด๋ฌํ ํ ๋ก ์ค ๋ช ๊ฐ์ง๋ฅผ ์ดํด ๋ณด์๊ณ ํ๋ก์ ํธ ์ด๋ฆ์ YML ํ์ผ์์ ๊ตฌ์ฑ ํ ์ ์๊ธฐ๋ฅผ ์ํ๋ ์ฌ๋๋ค์ ์๊ฒฌ์ด ๋ง์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๊ทธ๋ ๊ฒํด์๋ ์๋๋์ง๋ฅผ ์ค๋ช ํ๋ ๋จ ํ๋์ ์ฝ๋ฉํธ๊ฐ ์๋๋๋ค. ์ด๋ฌํ ๋ ผ์๋ ๋จผ ๊ธธ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค.
์ฌ์ฉํ๊ธฐ ์ฌ์ด ์๋ฃจ์
์ ์ฐพ๊ณ ์คํ๋๋ ๋ช
๋ น ์ค์ ๋ํ ์ฌ์ฉ์์์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ํ์๊ฐ์๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฝ๊ฒ ์ค์ ํ ์์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ ์ฌ๋์ผ๋ก์ up
ํต๊ณผํ๊ณ ๋ง๋ฒ์ฒ๋ผ ์ ์ฒด ์๋ฒ ํด๋ฌ์คํฐ๋ฅผ ์์ํฉ๋๋ค.)-์ด๊ฒ์ด ๊ณต๊ฐ ๋ ์ง๋ฌธ์ด๋ผ๋ ์ฌ์ค์ ์ถฉ๊ฒฉ์ ๋ฐ์์ต๋๋ค. ๋ฌธ์ ๊ฐ๋๋ ์ด์ ๋ ๊ตฌํ์ ๊ดํ ๋ช
ํํ ์ค๋ช
์ด ์๋ค๋ฉด ๊ด์ฌ์ด์์ ๊ฒ์
๋๋ค.
์ฐ์ํ ํด๊ฒฐ์ฑ
์ container_name
์์ฑ (๋ฐ ๋ณผ๋ฅจ, ๋คํธ์ํฌ ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋์ ์ด๋ฆ ์ง์ )์ ์๋ฆฌ ํ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
services:
my_service:
container_name: {project_name}_{service_name}_{instance_number} # default value
์ด๋ฌํ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ฉด
services:
my_service:
container_name: fixedprojectname_{service_name}_{instance_number}
ํธ์ง : ์ด๊ฒ์ ๋์ผํ ํด๋ ์ด๋ฆ ๋ด์์ 2 ๊ฐ์ ๊ณ ์ ํ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ ์๋ฒฝํ ์๋ฃจ์ ์ด ์๋๋๋ค.
๋ฟก๋ฟก
์ฐ์ํ ํด๊ฒฐ์ฑ ์
container_name
์์ฑ (๋ฐ ๋ณผ๋ฅจ, ๋คํธ์ํฌ ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋์ ์ด๋ฆ ์ง์ )์ ์๋ฆฌ ํ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.services: my_service: container_name: {project_name}_{service_name}_{instance_number} # default value
์ด๋ฌํ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ฉด
services: my_service: container_name: fixedprojectname_{service_name}_{instance_number}
ํธ์ง : ์ด๊ฒ์ ๋์ผํ ํด๋ ์ด๋ฆ ๋ด์์ 2 ๊ฐ์ ๊ณ ์ ํ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ ์๋ฒฝํ ์๋ฃจ์ ์ด ์๋๋๋ค.
๋๋ ๋ํ ์ด๊ฒ์ํ๊ณ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ถฉ๋ ๋ฌธ์ ๋ฅผ ๊ณ ์น ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง, COMPOSE_PROJECT_NAME
๋ณ์๋ฅผ .env
ํ์ผ์์ ๊ณ ์ ํ ๊ฐ์ผ๋ก ์ค์ ํด์ผํฉ๋๋ค.
์ด ์์ ์์ ์ ๋ ์ ์ง ๊ด๋ฆฌ์๊ฐ ์๋ฃจ์ ์ ๊ฑฐ๋ถํ๋ ์ด์ ๋ฅผ ์ดํดํ๊ณ ์ถ์ต๋๋ค. ์๋ฃจ์ ์ ๋ํ ํ ์์ฒญ์ด ์ด๋ฏธ ์์ต๋๋ค.
๋ฌด์์ด ์๋ชป๋์๋์ง ์๊ฒ๋๋ฉด ์์ ์์ ์ ํ ์ ์์ต๋๋ค. ์ด ์์ ์์ "๊ฑฐ๋ถ ๋จ"์ด์ธ์ ํผ๋๋ฐฑ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ ๋ ๊ฐ์ง ์๊ฒฌ์ด ์์ต๋๋ค.
https://github.com/docker/compose/issues/745#issuecomment -345054893
https://github.com/docker/compose/issues/745#issuecomment -346487757
๊ทธ๋ฌ๋ ๋๋ ๊ทธ ์ฃผ์์ ์ฝ๋ ๊ฒ์กฐ์ฐจ ์ธ์ ํด์ผํ๋ค. ๋๋ ์ ๋จ์ง yaml ํ์ผ์ project_name์ ์ถ๊ฐํ์ง ์๋์ง ์์ ํ ์ดํดํ์ง ๋ชปํ๋ค. docker-compose.yaml ํ์ผ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ง๋ ๋ค๊ณ ์๊ฐํ๋ ์ฌ๋๋ค์ yaml ํ์ผ์ ์ด๋ฆ์ ๋ฃ์ง ๋ง์์ผํ์ง๋ง ๋๋จธ์ง๋ ๊ทธ๋ ๊ฒ ํ ์์๋ ์ต์ ์ด ์์ต๋๋ค.
์ข์์, ๋ค๋ฅธ ๋๊ธ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ฝ์ผ๋ ค๊ณ ์ต์ ์ ๋คํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ์ณ์ ๋ด์ฉ์ ์ฝ๊ณ ์ฌ๋ฐ๋ฅธ ๋ด์ฉ์ ์ป๊ณ ์๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด๋๋ ์ฐธ์กฐ ์ธ์๋ ์ฐธ์กฐ์ ๋ด์ฉ์ ์ฐธ์กฐํ๋ ์งง์ ๊ด๊ณ ๋ฌธ์ ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ ๊ฐ๋ณด๊ณ ์๋ ์ฐ๋ ค ์ฌํญ์ ์์ฝ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๊ฒ์ ๋ช ํํํ๋ ๋ฐ ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
(1) ํ๋ก์ ํธ ์ด๋ฆ์ YML ํ์ผ์ ์ถ๊ฐํ๋ฉด ํ๋ ์ด์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ง ํ๋์ YML ํ์ผ์ ์คํํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ฑฐ๋ ์ ์ด๋ ๋ณต์กํ๊ฒ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ํ๋ก์ ํธ๋ฅผ ๋ ์ฌ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
(2) "ํ๋ก์ ํธ์ ํ์ง์ด (์ด ํํ๋ก) ์ถ๊ฐํ๋ ๊ฒ์ ์ ๋นํํ๊ธฐ์๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋๋ฌด ๋ง์ ์ด๋ ค์์ ๊ฒช์ ๊ฒ์
๋๋ค."
(3) "ํ๋ก์ ํธ ์ด๋ฆ์ด ์์ฑ ํ์ผ์ ์์ผ๋ฉด ๋ ํ๋ก์ ํธ๊ฐ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ฌ ๋ ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ์ค๋จ๋ฉ๋๋ค."
๋๋ ์ด๊ฒ์ ๋ํด ์๊ฐํ์ง๋ง, ํด๊ฒฐํด์ผ ํ ์ฐ๋ ค์ ๋ํด ๋์ ํ ์์์ ๋๊น์ง ์ฝ๋ฉํธ๋ฅผ ๋ณด๋ฅํ๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ ํฉ๋ฆฌ์ ์ ๋๊น?
(4) ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ (๊ฐ์ ์ฐ์ ์์ / ์์)
(1) ํ๋ก์ ํธ ์ด๋ฆ์ YML ํ์ผ์ ์ถ๊ฐํ๋ฉด ํ๋ ์ด์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ง ํ๋์ YML ํ์ผ์ ์คํํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ฑฐ๋ ์ ์ด๋ ๋ณต์กํ๊ฒ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ํ๋ก์ ํธ๋ฅผ ๋ ์ฌ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง, ๊ตฌ์ฑ์ ๊ธฐ๋ณธ ๋ฐ ํ์ผ๋ก ๋ถํ ํ๊ณ ์์ํ๋ ๊ณต์์ ์ธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค-https: //docs.docker.com/compose/extends/. ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๋ค.
์ ์๊ฒ ์ ๊ฐ ์ฐพ๊ณ ์๋ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก๋ ํ๋ก์ ํธ์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๋ก์ปฌ๋ก ์คํํ ์์๋ ๊ธฐ๋ฅ์ ๋๋ค (๊ฐ๋ฐ, ํ ์คํธ ํ๊ฒฝ ๋ฑ).
ํด๊ฒฐ์ฑ ์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ช ์ ์ ์ผ๋ก ์ค์ ํ๊ฑฐ๋ ๊ฒฝ๋ก ์ํ๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
my-project
์ ๊ฐ์ด yaml ํ์ผ์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ช
์ ์ ์ผ๋ก ์ค์ ํ๋ฉด ํ๋ก์ ํธ์ ๋จ์ผ ์ธ์คํด์ค์ ๋ํ ์์
์ ๋จ์ํํ๊ฑฐ๋ docker
ํด๋์ ๋ชจ๋ ๋์ปค ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์
์ ์ํ ํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ํ๋ก์ ํธ์์.
.
โโโ project_a
โ โโโ docker
โ โ โโโ docker-compose.yml (project_name: my-project)
โโโ project_b
โ โโโ docker
โ โ โโโ docker-compose.yml (project_name: some-other-project)
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋์ผํ ํ๋ก์ ํธ์ ์ฌ๋ฌ ์ธ์คํด์ค์ ๋์์ด๋์ง ์์ผ๋ฏ๋ก ๊ฒฝ๋ก ํ์์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์ํํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
project_name: ../(*)
๊ทธ๋์ ๊ฐ์ ์์์
.
โโโ project_a
โ โโโ docker
โ โ โโโ docker-compose.yml (project_name=project_a)
โโโ project_b
โ โโโ docker
โ โ โโโ docker-compose.yml (project_name=project_b)
โโโ project_b_copy
โ โโโ docker
โ โ โโโ docker-compose.yml (project_name=project_b_copy)
์ ์ฌํ๊ฒ project_name: ../(../*)
.
โโโ dev
โ โโโ project_a
โ โ โโโ docker
โ โ โ โโโ docker-compose.yml (project_name=dev_project_a)
โโโ test
โ โโโ project_a
โ โ โโโ docker
โ โ โ โโโ docker-compose.yml (project_name=test_project_a)
์ํ๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ด ์์ง ์๊ฐ๋ฝ๋ณด๋ค ์ข ๋ ์ฌ์ธต์ ์ผ๋ก ์๊ฐํด์ผํ์ง๋ง ์ ์ด๋ ์ด๋ ๊ฒํ๋ฉด ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃฐ ์์๋ ์ ์ฐ์ฑ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ ๋๋ด์ผ๋ก : ๋ด docker-compose.yml์์ ๊ณ ์ ์ด๋ฆ์ ๊ตฌ์ฑํ๋ ค๋ฉด ์ํ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ ๋ง๋ ๋ค์ project_name: name-of-the-file-named-like-the-name-i-want
?
ํ์ฌ ๋์ผํ ๋๋ ํ ๋ฆฌ์ docker-compose
ํ์ผ์ด๋ก๋๋์ด ์์ต๋๋ค. dc-work.yml
, dc-server.yml
๋ฑ๊ณผ ๊ฐ์ด ๋ชจ๋ ์๋ก ๋ค๋ฅธ ๊ด๋ จ์๋ ์๋น์ค๋ฅผ๋ก๋ํฉ๋๋ค.
docker-compose up dc-A.yml
๋ฅผ ์คํ ํ ๋ค์ docker-compose up dc-B.yml
๋ฅผ ์คํํ๋ฉด Docker๋ ์คํ์ค์ธ ๊ณ ์ ์๋น์ค๊ฐ ์๋ค๊ณ ๋์๊ฒ ์์๋ฆฌ๋ฅผํฉ๋๋ค (๋ฌผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค. ์ ์ฃผ๋ฐ์ ํ๋ก์ ํธ ์ด๋ฆ ๋๋ฌธ์
๋๋ค).
์ด๊ฒ์ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด ์ ๋ง๋ก ์์ต๋๊น? ๊ฐ dc-A|B|C|etc.yml
ํ์ผ์ ์์ฒด ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ ํ ๋ค์ ๊ฐ ํ์ผ์ ํ์ํ์ฌ ๋ชจ๋ ์๋น์ค๋ฅผ๋ก๋ํ๋ ๊ฒ์ ์๊ฐ ๋ญ๋น์ฒ๋ผ ๋ณด์
๋๊น, ์๋๋ฉด ๋ญ๊ฐ ๋์น๊ณ ์์ต๋๊น?
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ช ํํ๊ณ ์ง์ ์ ์ธ ์๋ฃจ์ ์ @ cr7pt0gr4ph7์ด https://github.com/docker/compose/issues/745#issuecomment -182296139์์ ์ ๊ณตํ์ต๋๋ค. ๋ง์ ์ฐฌ์ฑํ๋ฅผ ๋ฐ์์ต๋๋ค. ๋ชจ๋ ์ฐ๋ ค ์ฌํญ์ด ๋ ผ์์์ ๋ค๋ฃจ์ด์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ง์ ์ฌ๋๋ค์ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฌด์์ ์ ๊ณตํฉ๋๊น?
๋ํ ๋ชจ๋ ๋์ปค ๊ด๋ จ ํญ๋ชฉ์ด ํฌํจ ๋ .docker ํด๋๊ฐ์๋ ๊ณ ์ ๋ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋ง์ .docker ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก ๋๋ฉ๋๋ค. ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ์์ ์์ ์ค์ ๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์์ ๋๋ค ...ํ์ง๋ง์ด ์์ ๊ฒ์ด ๊ณ์ ๋ฐฉํด๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.-> ๋ํ PHPStorm ๋ฑ์๋ -p /-project-dir ์ธ์๋ฅผ ์ ๋ฌํ ์์๋ ์ต์ ์ด ์์ต๋๋ค. ๋๋ฅผ ๋ฏฟ์ผ์ญ์์ค. ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ค์ ํ๋ ๊ฒ์ ์ํ ์ง ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก .env๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ, ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ญ์์ค.
ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๊ธฐ ์ํด docker-compose ํ์ผ์ ์์ฑ์ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
์๋ ํ์ธ์.
๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ, ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ญ์์ค.
์ด๊ฒ์ด ๊ฐ์ฅ ์ข์ ์์ฝ์
๋๋ค.
https://github.com/docker/compose/issues/745#issuecomment -182296139
๋ง์ ๋ ผ์๊ฐ์์์ต๋๋ค. ๋ ์ด์ ๋ ผ์ ํ ํ์๊ฐ ์์ต๋๋ค. ํ๋ก์ ํธ ๊ด๋ฆฌ์๋ ์ค๋ ๋ (๋ณต์)๋ฅผ ์ฝ๊ณ ํ์ํ ์์ ์ ์ํํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
๋์๊ฒ๋ ์ฌ์ ํ ์ด๊ฒ์ด๋ค : https://github.com/docker/compose/issues/745#issuecomment -248644429
๋์๊ฒ๋ ์ฌ์ ํ ์ด๊ฒ์ ๋๋ค : # 745 (์ฝ๋ฉํธ)
์, ๊ธฐ์กด์ ์์ง๋ง ์ข์ง ์์ ์๋ฃจ์ ์ด ์์ต๋๋ค. ์ด๋ฌํ ์๊ฒฌ์ ํฌํ์์ ์ ์ธ๋์์ผ๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด ๋ฌธ์ ๋ฅผ ๋ถ๋ช ํ ๋ฐํ์ต๋๋ค. ๋งํฌ ๋ ๋๊ธ์ ์ด๋ฌํ ์ค๋ ๋์์ ์ ๊ธฐ ๋ ๋๋ถ๋ถ์ ํฉ๋ฒ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์ง ์์ต๋๋ค.
Tbh, ๊ทธ๊ฒ์ ์ผ์ข
์ ๋
ผ์ ์ ์
๋๋ค. ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด docker-compose
์ ํ ๊ธฐ๋ฅ์ ์ํด Kubernetes๋ก ์ด๋ํ์ต๋๋ค. ์ฝ๊ฐ ์ฅํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ํ๊ณ ์์ผ๋ฉฐ ํด๋ผ์ฐ๋ ๊ณต๊ธ ์
์ฒด์์ ์ ์ง์ํฉ๋๋ค.
์๋
ํ์ธ์.
https://github.com/docker/compose/issues/745#issuecomment -182296139์ ์ค๋ช
๋๋๋ก ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํ๋ ค๊ณ ํฉ๋๋ค.
์ด์๊ฐ ์๋ค๊ณ ์๊ฐํ์ง ๋ง์ญ์์ค.
์์์ ์ธ๊ธํ๋ฏ์ด container_name
์ฌ์ฉํ ๋์ ๋น์ทํ์ง๋ง docker-compose.yml
์ผ๋ถ๊ฐ๋์ด์๋ ์๋๋ ์ด์์ฑ์ ๊ดํ ๊ฒ์
๋๋ค. ๊ธฐ์กด ์ค์ ๊ณผ ๋์ผํ ๊ตฌ์ฑ์ ์ฌ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
์ํฌ ํ๋ก๊ฐ ํด๋ ๊ฒฝ๋ก์ ์์กดํ๊ณ ์ด๋ป๊ฒ ๋ project-name
๊ฐ ๊ตฌ์ฑ์ ์ฝ์
๋๋ ๊ฒฝ์ฐ ๋ณํฉ, ์ฌ๋ฌ ๊ฐ์ ์์ฑ ํ์ผ, ํ
ํ๋ฆฟ ๋ฑ์ ํตํด ๊ธฐ์กด ์คํ์ ๋ฎ์ด ์ฐ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฃ์ก ํฉ๋๋ค๋ง, ์ด๊ฒ์ wontfix .. (ํธ์ง)๋ก
๋ฟก๋ฟก
์ํฌ ํ๋ก๊ฐ ํด๋ ๊ฒฝ๋ก์ ์์กดํ๊ณ ์ด๋ป๊ฒ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ๊ตฌ์ฑ์ ์ฝ์ ๋๋ ๊ฒฝ์ฐ ๋ณํฉ, ์ฌ๋ฌ ๊ฐ์ ์์ฑ ํ์ผ, ํ ํ๋ฆฟ ๋ฑ์ ํตํด ๊ธฐ์กด ์คํ์ ๋ฎ์ด ์ฐ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฒซ์งธ, ํ๋ก์ ํธ ์ด๋ฆ์์ด๋ฅผ ํ์๋กํ๋ ์ฌ๋๋ค์ ์ํด์๋ง compose ํ์ผ์ ์ค์ ๋๋ฉฐ, ์ด๋ compose ํ์ผ์ด ๊ธฐ์กด ์คํ๊ณผ ํจ๊ป ์๋ํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด ์ค์ ๊ณผ ๊ด๋ จ๋ ๋ฌธ์์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
๋์งธ, ํน์ ํ๋ก์ ํธ ์ด๋ฆ์ ์์กดํ๋ ์ฌ๋๋ค์ ๊ฒฝ์ฐ ๋ค์์ ๊ณ ๋ คํ์ญ์์ค.
์ด๊ฒ์ wontfix๋ก ๋ซ๋ ๊ฒ์ ์์ ๋ด์ฉ์ด ์ถฉ๋ถํ์ง ์์ ์ด์ ๋ฅผ ์ค๋ช ํ๊ฑฐ๋ ํด๊ฒฐ์ฑ ์ ์ ์ํ์ง ์๊ณ ๋๋ณ๋ก ๋์์ด๋์ง ์์ต๋๋ค.
๋ด ์ํฌ ํ๋ก (๋๋ ์ ์ฒด ํ์ ์ํฌ ํ๋ก)๊ฐ ์ฝ๋๋ฅผ ์ฒดํฌ ์์ํ๋ ํด๋์ ์ด๋ฆ์ ์ข ์๋๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
.env ํ์ผ ์๋ฃจ์
์ ์ฃผ์ ๋ฌธ์ ์ ์์ด ํ์ผ์ด ๋ช
๋ น ์คํ์ ์์
๋๋ ํ ๋ฆฌ์ ์์ด์ผํ๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ฉด docker-compose๋ ์์ฑ ํ์ผ์ ์์ ๋๋ ํ ๋ฆฌ๋ก ํ์ธํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ (A) ๋์ผํ ์ด๋ฆ์ ํด๋๋ก ์ฝ๋๋ฅผ ์ฒดํฌ ์์ํ๊ฑฐ๋ (์ฝ๋ ์ ์ฅ์์ ๋ฃจํธ์์๋ docker-compose.yml ํ์ผ์ ๊ฐ์ ) (B)์์ docker-compose ๋ช
๋ น ๋ง ์คํํด์ผํฉ๋๋ค. ์ ์ฅ์์ ๋ฃจํธ ํด๋๊ฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถฉ๋ํ๋ ์คํ์ ์์ฑํ๊ฑฐ๋ (C) ์คํ ์ด๋ฆ์ด ๋ค๋ฅด๋ฉฐ ๋ชจ๋ ๋ฌธ์ ๋ฐ ์คํฌ๋ฆฝํธ๋ replace stack name here
๋ผ๊ณ ๋งํด์ผํฉ๋๋ค.
(C)๊ฐ docker๊ฐ ๊ถ์ฅํ๋ 'ํด๋์ฉ'์๋ฃจ์ ์ผ๋ก ์ ์ํ๋ ๊ฒฝ์ฐ docker-compose CLI๋ docker CLI ๋ช ๋ น์ผ๋ก ๊ธฐ๋ฅ์ด ์์ ํด์ผํ๋ฉฐ, ๊ทธ๋๋ ์ฌ์ ํ์ด ๊ธฐ๋ฅ์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ํฌ ํ๋ก๊ฐ ํด๋ ๊ฒฝ๋ก์ ์์กดํ๊ณ ์ด๋ป๊ฒ ๋ ํ๋ก์ ํธ ์ด๋ฆ์ด ๊ตฌ์ฑ์ ์ฝ์ ๋๋ ๊ฒฝ์ฐ ๋ณํฉ, ์ฌ๋ฌ ๊ฐ์ ์์ฑ ํ์ผ, ํ ํ๋ฆฟ ๋ฑ์ ํตํด ๊ธฐ์กด ์คํ์ ๋ฎ์ด ์ฐ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ์ด docker-compose ํ์ผ์ ์ถ๊ฐ๋๋ฉด ๋ถ๋ช ํ ์ด์ ๊ฐ ์์ต๋๋ค (๋์ปค ์์ฑ ํ์ผ์ ๋ค๋ฅธ ๋ชจ๋ ์ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก). ์ฌํ๊ฒ๋ ์ง๊ธ์ ์ฒดํฌ ์์ ํ ํด๋์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์กฐ์ฐจ๋ (git์์ ์ถ์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฑํ์ง ์์) ์์คํ ์ด ์์๋์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด 2020 ๋ ์ด๋ผ๋ ๊ฒ์ ๋ฏฟ์ ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๋ ์ฌ์ ํ์ด ๊ฑฐ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ ํ์ง ์์์ต๋๋ค. ์ด๊ฒ์ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๊ฐ ์๋๋ฉฐ ์์ ํ ์ ํ์ ์ธ ๊ธฐ๋ฅ์ด๋ฉฐ ์๋ฒฝํ๊ฒ ์ดํด๋ฉ๋๋ค. Kubernetes๊ฐ ์ด์ Docker๋ฅผ์ํ ์ฌ์ค์์ ๋ฐฐํฌ ๋๊ตฌ๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ๊ฐ๋ฐ / ๋ก์ปฌ ๋ฐฐํฌ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ Docker-compose๋ฅผ ์์ํ๊ณ ์ ์ฅ์์ ๋ฃจํธ์ Docker-compose ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฝ๋๋ฅผ ๋ก์ปฌ๋ก ์คํํ๋ ๊ฒ์ด ๋งค์ฐ ์ธ๊ธฐ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ ์ฌ๋ก.
@ dc-pm์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค. "Given Kubernetes๋ ์ด์ Docker๋ฅผ์ํ ์ฌ์ค์์ ๋ฐฐํฌ ๋๊ตฌ์ ๋๋ค."
์ด์ ๋ ์ด์ docker-compose ํ์ผ์ ์์ฑํ์ง ์์ต๋๋ค. ์์ฐ์ ๋ณด์ง ๋ชปํ๋ ๊ฒ์ ๋ํด์๋ ์ถฉ๋ถํ ์ด์ต์ด ์์ต๋๋ค. ์ฟ ๋ฒ๋ค ํฐ์ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํด๋ผ์ฐ๋ ๊ณต๊ธ ์ ์ฒด์์ ๋๋ฆฌ ์ง์ํฉ๋๋ค.
์ฌ์ค ๋ด ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ปจํ ์ด๋๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์กฐ์ฐจ ๋งค์ผ ๋๋ฌด ๋ฒ๊ฑฐ ๋กญ์ต๋๋ค. ๋๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
@ dc-pm ์์ฑ :
๋๋ ๊ทธ๊ฒ์ด 2020 ๋ ์ด๋ผ๋ ๊ฒ์ ๋ฏฟ์ ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๋ ์ฌ์ ํ์ด ๊ฑฐ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ ํ์ง ์์์ต๋๋ค.
์์ ๋์ง ์์์๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ์๊ฐ ์ ๊ทน์ ์ผ๋ก ์์ ์ ๊ฑฐ๋ถํฉ๋๋ค.
๋ฌธ์ ๋์ด ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ์ฒญ์๋ ๋ค์ด์ด ์ฌ์ฉ ์ฌ๋ก์ ์๋ฏธ๋ฅผ ์ดํดํ๊ฑฐ๋ ํด๊ฒฐ์ ์์ฒญํ๋ ๊ฒฝํ ๋ง์ ์ฌ์ฉ์์ ๋ง์๋ค์ ์์๋ ๊น์ด์๋ ๊ฒฝํ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์์ ์์ ๋๋ ๊ทธ๋ค์ด ๋ ์ด์์ ์คํ์ด์๋ ํ๊ฒฝ์์ ์ผํ๊ฑฐ๋ ์ด์ฉ๋ฉด ํ์ผ๋ก ์ผํ๋์ง ์์ฌํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์งํ _ ์ด๊ฒ์ ์๋ฒฝํ๊ฒ ๋ช ๋ฐฑํ ํฅ์์ด ๋ ๊ฒ์ ๋๋ค! _
์น์ ํ ์๋ฆผ ...
์คํ ์์ค ๊ฐ๋ฐ์๋ "์ง์ / ๋ํ"์ด ์๋๋ฉฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋๋ถ๋ถ ๋ฌด๋ฃ๋ก ์์
ํฉ๋๋ค.
๋ถ๋ช
ํ ๋ฌธ์ ๊ฐ๋๋ ๊ฒฝ์ฐ ์๊ฐ์๋ด์ด ํด๊ฒฐ์ฑ
์ ์กฐ์ฌํ๊ณ PR์ ํธ์ํ์ญ์์ค.
๋น๋์ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค.
https://github.com/docker/code-of-conduct/blob/master/code-of-conduct-EN.md
๊ฐ๋ฐ์๊ฐ ๋ฐ๋ ํ ๋ ๋ณํ๋ฅผ ๋ฐ์ด ๋ถ์ด๋ ๊ฒ์ ๊ฝค ์ด๋ ต์ต๋๋ค ...
ํ ์์ผ, 2020 ๋
3 ์ 14 ์ผ 03:19, Antoine Gravelot [email protected]
์ผ๋ค :
์น์ ํ ์๋ฆผ ...
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์คํ ์์ค ๊ฐ๋ฐ์๋ "์ง์ / ๋ํ"์ด ์๋๋๋ค.
๊ทธ๋ค์ ๋๋ถ๋ถ ๋ฌด๋ฃ๋ก ์ผํ๊ณ ์์ต๋๋ค.
๋ถ๋ช ํ ๋ฌธ์ ๊ฐ๋๋ ๊ฒฝ์ฐ ์๊ฐ์๋ด์ด ํด๊ฒฐ์ฑ ์ ์กฐ์ฌํ์ญ์์ค.
PR์ ๋๋ฆ ๋๋ค.๋น๋์ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค.
https://github.com/docker/code-of-conduct/blob/master/code-of-conduct-EN.md
โ
๋๊ธ์ ๋ฌ์ ๊ธฐ ๋๋ฌธ์ ์์ ํ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/745#issuecomment-598991880 ๋๋
๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ABAXP2DRD7H4YI7KQ7B2URLRHLLQ5ANCNFSM4AZMCNWA
.
@agravelot ๋๋ ๋ช ๊ฐ์ง PR์ด ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ด์์ ์ด์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ํ ๋ก ์์ ์๋์ด ๊ธฐ๋ฅ์ ์ํ์ง ์๋๋ค๋ ๊ธฐ๋๋ฅผ ๋งค์ฐ ๋ช ํํ๊ฒ ์ค์ ํ์ต๋๋ค. ์ฝ๋ฉ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
@agravelot ์ง์ฐ์ ๋ํด ์ฃ์กํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ฌ๊ธฐ์ ๊ธฐ์ฌํ๋ ํ๋ฅญํ๊ณ ์ฌ๋ฅ์๋ ๋ง์ ์ฌ๋๋ค์ ๋ฌด๋กํ๊ฒ ์ฌ๊ธฐ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ธ๋ ฅ ๋ถ์กฑ์ ๋น๋ํ๋ ๊ฒ๋ ๋์์ด๋์ง ์์ต๋๋ค.
๋๋ ์์ฃผ ์ค๋ ๊ธฐ๊ฐ ๋์ ๋ช ํํ ์ง์์๋ ๋ถ๊ตฌํ๊ณ ์์์ด ๋ฃ์ง ์์ ์์ด๋์ด์ ๋ํ ์ง์์ ๊ฐ์กฐํฉ๋๋ค. ์ฐ๋ฆฌ์ ํ๋ ๊ฐ๋ น์ ์ ์ ๋์ด (๋ฐ ์ผ๋ฐ์ ์ผ๋ก OSS)์ ์ ์ฒด ์์ ์ ์ฌ๋๋ค์ด ์ฝ๋์ ๊ธฐ์ฌํ๊ณ ๋ชจ๋ ์์ด๋์ด๋ฅผ ์กด์คํ ์ ์๋๋กํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฏธ ์ฌ๋ฌ ๊ฐ์ pull ์์ฒญ์ด ์์ฑ๋์์ง๋ง ์ํฉ์ ๋์์ด๋๋ค๋ฉด ๋ค๋ฅธ ์์ฑ์ ๋งค์ฐ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
๋ ๊ฑด์ค์ ์ธ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ด๋ฏธ ์ฌ๋ฌ ๊ฐ์ pull ์์ฒญ์ด ์์ฑ๋์์ง๋ง ์ํฉ์ ๋์์ด๋๋ค๋ฉด ๋ค๋ฅธ ์์ฑ์ ๋งค์ฐ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
์, ๊ฐ๋ฐ์๋ ๊ฒํ ๋ฅผ ๊ณ์ํ๊ฑฐ๋ "์์ ํ์ง ์์"์ผ๋ก ์ข ๋ฃํด์ผํฉ๋๋ค (๋ ผ์ ๊ฐ๋ฅ์ฑ์ด ์์). ๊ณต์์ ์ธ ํผ๋๋ฐฑ์์ด ๋ช ๋ ๋์ ๊ณต๊ฐ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ์ ๊ธฐ์ฌ์์ ์๊ฐ์ ๋ญ๋นํ๋ ๊ฒ์ ๋๋ค (๊ฐ์ฅ ๋์ ์๋ฏธ์์ ). ์ด๊ฒ๋ ๋ฌด๋กํฉ๋๋ค, IMO.
์ฌ๋ฌ๋ถ, ์ ๋ ์ฌ์ฉ์๋ก์ ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณต์ ํ๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋์ 2 ๊ฐ์ docker-compose.yml ํ์ผ์ด ์๋๋ฐ ํ๋๋ ๊ฐ๋ฐ ํ๊ฒฝ ์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ํ๋ก๋์ ์ฉ์ ๋๋ค. ๊ฐ์ ํด๋์ ์์ต๋๋ค. ๋ ๋ค "๋ฐ์ดํฐ๋ฒ ์ด์ค"๋ผ๋ ์ด๋ฆ์ด ๊ฐ์ ์๋น์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋ ์๋น์ค๋ฅผ ๋์์ ๋ฐฐํฌํ๊ณ ์ถ์ต๋๋ค. ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ด์ผ๊ธฐํ๊ณ ์๋ ์ปจํ ์ด๋ํ์ด๊ณ ์ํ๋๋งํผ ํ์ฅ ํ ์ ์์ต๋๋ค. ํ์ง๋ง "container_name"๊ฐ์ด ๋ค๋ฆ ๋๋ค.
๊ทธ๋์ ๋๋ ์คํํฉ๋๋ค.
macbook@fuck-fuck autocat-server % docker-compose -f ./compose-dev.yml up -d database
Creating network "autocat-server_autocat-dev" with the default driver
Creating database-dev ... done
macbook@fuck-fuck autocat-server % docker-compose -f ./compose-prod.yml up -d database
Creating network "autocat-server_autocat-prod" with the default driver
Recreating database-dev ... done
"prod"ํ๋ก์ ํธ์์๋ ์๋น์ค๋ฅผ ๋ช ํํ๊ฒ ์ธ๊ธํ๋ฉด์ "Recreating database-dev"๊ฐ ์ด๋ป๊ฒ ํ์๋๋์ง ์ฃผ๋ชฉํ์ญ์์ค. ์ค์ ๋ก ๊ธฐ์กด ์ปจํ ์ด๋๋ฅผ ๋ฎ์ด ์๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ข ๋ฃ๋๊ณ ์ปจํ ์ด๋๊ฐ ํ์๋ก ๋์ฒด๋ฉ๋๋ค.
๋๋ ๋ณ๋์ "docker-compose.yml"ํ์ผ์ด ๋ณ๋์ ํ๋ก์ ํธ๋ฅผ ์๋ฏธํ๋ค๋ ๊ฐ์ ํ์์ด ์์ ์ ์ํํ๊ณ ์์ง๋ง ๋ถ๋ช ํ ์ด๊ฒ์ ์ค์ ์ํ์์ ๊ทธ๋ฐ ๊ฒ์ด ์๋๋๋ค. ์๋น์ค๊ฐ ๋ฐฐํฌ๋๋ ํ๋ก์ ํธ๋ "docker-compose.yml"์ ์์น์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ๊ฐ๋ณ ํ๋ก์ ํธ์ ์ผ๋ถ๊ฐ๋๋๋กํ๋ ค๋ฉด ํ๊ฒฝ ๋ณ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ณ๋๋ก ์ง์ ํด์ผํฉ๋๋ค. ๋ง์นจ๋ด ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
macbook@fuck-fuck autocat-server % COMPOSE_PROJECT_NAME=autocat-prod docker-compose -f ./compose-prod.yml up -d database
Creating network "autocat-prod_autocat-prod" with the default driver
Creating database-prod ... done
macbook@fuck-fuck autocat-server % COMPOSE_PROJECT_NAME=autocat-dev docker-compose -f ./compose-dev.yml up -d database
Creating network "autocat-dev_autocat-dev" with the default driver
Creating database-dev ... done
๋จ์ผ ๋ช ๋ น ๋ฐฐํฌ์ ๋๋ฌด๋๋ ๋ง์ ๋๋ด์ ๋๋ค. ์ ์๊ฐ์ .yml์์ด ์ปจํ ์คํธ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๊ธฐ์ ์ข์ ๊ณณ์ ๋๋ค.
๋๋ "database-dev"๋ฐ "database-prod"๋ผ๋ ๋ค๋ฅธ ์ด๋ฆ์ ์ง์ ํ์ฌ ์๋น์ค๋ฅผ ๋จ์ผ ํ๋ก์ ํธ์ ๋ฐฐ์น ํ ์์์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ์ผํ ๋ฌธ์ ๋ ๋ค๋ฅธ docker-compose.yml์์ ์ธ๊ธ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์ธ์คํด์คํ ๋ ์๋น์ค๊ฐ ๊ณ ์๊ฐ๋๋ค๋ ๊ฒฝ๊ณ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.
macbook@fuck-fuck autocat-server % docker-compose -f ./compose-prod.yml up -d database-prod
Creating network "autocat-server_autocat-prod" with the default driver
Creating database-prod ... done
macbook@fuck-fuck autocat-server % docker-compose -f ./compose-dev.yml up -d database
WARNING: Found orphan containers (database-prod) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Creating database-dev ... done
์ด๊ฑด ๋ง๋ ์ ๋ผ์, ์ ์ด๋ ๊ฒ๋์ด์ผ ํ์ฃ ? ์ค์ ๋ก ๊ทธ๋ ๊ฒํด์ผํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
EDIT1 : @ dc-pm @CharlieReitzel ๋ฌด์จ ์๊ฐ? ์ ํจํ์ง ์์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ๋ด ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์๊ฒฌ์ ์ค ์ ์์ต๋๊น? :)
EDIT2 : ๋ ํ์ผ์ ๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ์ง์์ ๋ฃ์์ต๋๋ค.
sooo?
๊ด๋ฆฌ์, ์ฌ๊ธฐ ๋๊ตฌ ์๋์?
๊ฐ๋ฐ์๋ค์ 6 ๋
๋์ ๊ธฐ๋ค๋ฆฝ๋๋ค!
์๋
ํ์ธ์! compose-spec์ ๋ฌธ์ ๋ฅผ ์์ฑํ์ฌ compose ํ์ผ์ ์ถ๊ฐ ํ ์์๋ ํญ๋ชฉ์ ์ ์ดํ๋ โโcompose ์คํค๋ง์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ถ๊ฐํ์ต๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ ์์ฑ์ด compose ์ฌ์์ ์ถ๊ฐ๋๋ฉด docker-compose์์ ๊ตฌํ์ ์์ํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค์ ๋ก ํ๋ก์ ํธ ์ด๋ฆ์ด ๊ฝค ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. CI ํ์ดํ ๋ผ์ธ์ ์ด๋ฏธ์ง๋ก ๋ฌด์์ด๋ ํ ์ ์๋๋กํ๋ ค๋ฉด ํ๋ก์ ํธ ์ด๋ฆ์ ์์์ผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๊ทธ๋ฅผ ๋ค์ ์ง์ ํ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ฌ์ ์ ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ๊ณ ์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ํ๋ฅผ ์ฝ๊ฒ ์ ์งํ ์ ์์ต๋๋ค. ๋ฌด์จ ์ผ์ด ์์ด๋ ํ๊ฒฝ ๋ณ์์ ์ฌ์ ์๋ฅผ ์ง์ํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ผ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๊ตฌ์ฑ ํ ์์๊ฒ ๋ง๋๋ ์์ด๋์ด๊ฐ ๋ง์์ ๋ญ๋๋ค. ๋น์ทํ ๋ ผ์๊ฐ (# 45)์์ ์ผ์ด๋ฌ๋ค ๊ณ ์๊ฐํฉ๋๋ค.
.fig/project-name
์ ํ๋ก์ ํธ ์ด๋ฆ์ด ์์ผ๋ฉด ์ ๋ง ์์ ํ์ผ์ด ๋ง์ด ์์ฑ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.fig.yml
์์ฒด์ ๋ฃ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค (# 45์์ ์ ์๋๊ณ ๋์ปค ์ค ํ๋๊ฐ ์ ์์ ์์ฑํ๋ ๊ฒ์ฒ๋ผ).๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ ์ฅํ๋ฉด ์ด๋ค ์ด์ ์ด ์์ต๋๊น?