docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณต์ฌ ํ ๊ฐ๋ฅ์ฑ์ ๋์นฉ๋๋ค. ์ ๋ง ์ ์ฉํฉ๋๋ค.
์กฐ๊ธฐ ํ์ https://github.com/docker/compose/issues/2105 ์์ ๋ง์ +1 ์ ํ์ธ ํ์ญ์์ค.
์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ ๋๊น? ๋ด๊ฐ ๋ณธ ๋๋ถ๋ถ์ ๊ถ์ฅ ์ฌ์ฉ๋ฒ์ ๋ฐ ํจํด์ด์์ต๋๋ค.
์ ๊ณต๋ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ๋ง์ ์ฌ์ฉ ์ฌ๋ก ์ค ์ผ๋ถ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ณด์๋ค์ํผ ๋ง์ ๊ตฌ๋ ์๊ฐ "๋ฐ ํจํด"์ด ์๋ ์ ๋ง ์ ์ฉํ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
ooops, ์ด์ ๋ ์ด์ ์ฝ๋ฉํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ # 2105์ "๋ฌด์ธ๊ฐ"๊ฐ ๋ฐ์ํ์ต๋๋ค.
์๋ง๋ ์๋ชป๋ ๋งํฌ๋ฅผ ์ ๊ณตํ์ ๊ฒ์
๋๋ค ...
๋ฐ๋ผ์ ์ผ๋ถ ๊ตฌ์ฑ / ์ด๊ธฐํ ํ์ผ์ ์ปจํ ์ด๋์ ๋ณต์ฌํ๋ ๊ฒ์ด ์ ๋ง ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด db ์ปจํ ์ด๋์ ๊ฒฝ์ฐ ์ผ๋ถ * .sql ํญ๋ชฉ, apache / nginx ์ปจํ ์ด๋์ ๊ฒฝ์ฐ ์ผ๋ถ html / js / css ์ฝํ ์ธ ๋๋ Java ์ปจํ ์ด๋์ ๊ฒฝ์ฐ jar ํ์ผ์ด ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ณผ๋ฅจ์ ๋ง์ดํธํ๋ ๊ฒฝ์ฐ์ฒ๋ผ ๊ตฌ์ฑ๋ ์์คํ ์์๋ง "์ ์ญ ์ ์ผ๋ก"์ฌ์ฉ ๊ฐ๋ฅ / ์คํ ๊ฐ๋ฅํ๊ฒ๋ฉ๋๋ค. ์ฃผ๋ก ์ด๊ฒ์ ํธ์คํธ ๋ก์ปฌ ๋ฐ ์ปจํ ์ด๋ ํฌํจ ํ์ผ์ ์ผ๋ถ ์กฐํฉ์ ๋๋ค. ์ฌ์ค ์ด๋ค ์ปจํ ์ด๋๋ ๊ตฌ์ฑ์ด๋ ์ด๊ธฐํ์์ด ์ธ๋ชจ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ ๋ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ๋ฐ๋ฅธ ๋งํฌ์ ๋๋ค : https://github.com/docker/compose/issues/1664
+1
์ด๋ ๊ฒํ๋ฉด ๋ณผ๋ฅจ์ ๋ง์ดํธํ๋ ๊ฒฝ์ฐ์ฒ๋ผ ๊ตฌ์ฑ๋ ์์คํ ์์๋ง "์ ์ญ ์ ์ผ๋ก"์ฌ์ฉ ๊ฐ๋ฅ / ์คํ ๊ฐ๋ฅํ๊ฒ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ฌธ์ ์ ์ ์ปจํ ์ด๋๊ฐ ๋ค์ ์์ฑ ๋ ๋๋ง๋ค ์์ ์ ๋ฐ๋ณตํด์ผํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ทผ์์์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค (๋ฐ๋ผ์ "๋ฐ ํจํด"์ด๋ผ๋ ์ฉ์ด). ํ์ฅ ์ฑ์ด ๋งค์ฐ ๋ฎ๋ค๋ ์ฌ์ค์ ๋งํ ๊ฒ๋ ์์ต๋๋ค (์ปจํ ์ด๋๊ฐ 10 ๊ฐ? 20? 100?).
๋ฌธ์ ์ ๋ํ ์ค์ ํด๊ฒฐ์ฑ ์ ๋น๋ (Dockerfile)์ ํ์ํ ํ์ผ์ ํฌํจํ๊ณ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๋ ๋ค์ ๋น๋ํ๋ ๊ฒ์ ๋๋ค.
๋ฌผ๋ก ๋ชจ๋ "๊ณต์ ๋"์ฝํ
์ธ ๋ฅผ ์ปจํ
์ด๋์ ํฌํจํ์ฌ ๊ตฌ์ฑํ๋ฉด ์ปจํ
์ด๋๋ฅผ 10 ~ 100 ๊ฐ ํ์ฅํ๋ ๊ฒ์ด ํจ์ฌ ์ฌ์ธ ๊ฒ์
๋๋ค. ํ์ํ ๊ฒ์ ์ ์ฅ์์์ ๊ฐ์ ธ ์์ ๋
ธ๋ ๋ณ ๊ตฌ์ฑ ๋ง ๋ง์ดํธ (์,์ด ๊ฒฝ์ฐ ๋ง์ดํธ)ํ๋ ๊ฒ์
๋๋ค. ๋ํ ๊ฐ ๋
ธ๋์์ docker-compose๋ฅผ ์คํํ ํ์๊ฐ ์์ต๋๋ค.
๋ฌผ๋ก build : & Dockerfile๊ณผ ํจ๊ป docker-compose๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ํฉ์ด ์กฐ๊ธ ๋ ๋ณต์กํด์ง๊ณ docker-compose์ yaml ๊ตฌ์ฑ์ด ํจ์ฌ ๋ "์ฐ์ํจ"์
๋๋ค. : o)
๋๋ ์ฌ๋ณธ์ด (์ ์ด๋ ์ฌ์ ์๋ก์) ์ ์ฉ ํ ์์๋ ๋ฌธ์ ์ ๋ด์ฐฉํ์ต๋๋ค. ์ ๋ ์ฃผ๋ก Mac์์ ๊ฐ๋ฐํ๋ฏ๋ก ์ปจํ ์ด๋์์ ๋ฃจํธ๋ก ์คํ๋๊ณ ๋ง์ดํธ ๋ ๋ณผ๋ฅจ์ผ๋ก ๋ด๋ณด๋ด๋ ๋ช ๋ น์ ๋ฌธ์ ๊ฐ ๊ฑฐ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ต๊ทผ CentO์์ ๋์ผํ ์ํฌ ํ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฃจํธ ์ฌ์ฉ์๊ฐ ์์ ํ ํ์ผ์ด ๋ง์ดํธ ๋ ๋ณผ๋ฅจ์ ํตํด ํธ์คํธ์ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์๋นํ ๊ณ ํต์ด ๋ฐ์ํ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํธ์คํธ ํ์ผ์ ๋ง์ดํธํ๋ ๋์ ์ปจํ ์ด๋์ ๋ณต์ฌ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ด๋ จ ๋ฌธ์ : # 1532
๋ด ๊ฒฝ์ฐ์๋ Dockerfile์์ COPY๋ฅผ ์ฌ์ฉํ๊ณ ๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋ฌ ๊ฐ์ docker-compose ํ์ผ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก :
์ปจํ
์ด๋ ๋ด๋ถ์ ์ฝ๊ธฐ ์ ์ฉ ํ์ผ ์์คํ
์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ํด๋น ๋๋ ํ ๋ฆฌ์ ์ ํ์ผ์ ์์ฑํ์ง๋ง ํ์ผ ์์คํ
์ด ์ฝ๊ธฐ ์ ์ฉ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ์ผ ์์คํ
์ด ์ฝ๊ธฐ ์ ์ฉ์ด๊ธฐ ๋๋ฌธ์ rw ๋ณผ๋ฅจ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํจ๊ณผ๊ฐ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ณผ๋ฅจ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปจํ
์ด๋๊ฐ ์คํ๋ ๋๋ง ์ง์๋๋ ์ฐ๊ธฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ฉ์ง ๊ฒ์
๋๋ค. ๋ํผ (https://stackoverflow.com/questions/36362233/can-a-dockerfile-extend-another-one)๋ฅผ COPY
ํ์ผ๋ก๋ง ๋ง๋ค ์ ์์ง๋ง volume
๊ณผ ๋น์ทํ๊ฒ ์์ฑํ๋ฉด๋ฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก : .gitlab-ci.yml์์ ์ฌ๋ฌ ๋์ปค ์ปจํ ์ด๋๋ฅผ ๋์์ ์์ํ์ฌ git ์ ์ฅ์์ ๋๋ ํ ๋ฆฌ์ ์์ฑํด์ผํฉ๋๋ค.
์ปจํ ์ด๋ ๋ด๋ถ์ ํ๋ก์ธ์ค๊ฐ ์คํจํ๊ฑฐ๋ ์ปจํ ์ด๋๊ฐ ์์ฒด์ ์ผ๋ก ์ ๋ฆฌ๋๊ธฐ ์ ์ ci ์์ ์ด ์ทจ์๋๋ฉด ๊ถํ ๋ถ์กฑ์ผ๋ก ์ธํด gitlab-runner์์ ๋๋จธ์ง ํ์ผ์ ์ญ์ ํ ์ ์์ต๋๋ค. ์ด์ ์ปจํ ์ด๋ ๋ด์ ํ์ผ์ ๋ณผ๋ฅจ์์ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌ ํ ์ ์์ง๋ง, ๊ทธ๊ฒ์ ๋ฐ ํจํด์ด ๋ ๊ฒ์ ๋๋ค.
volumes: - ./folder_on_host/ :/folder_in_container/
๊ฐ์?
๋ด compose ํ์ผ์์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํธ์คํธ์์ ์ปจํ
์ด๋ (COPY์ ๋์ผ)๋ก ํ์ผ์ ๋ณต์ฌ ํ ์ ์์ต๋๋ค.
@harpratap ๋น์ ์ด ์ณ์ง ๋ง, ๋จ์ ์ / folder_in_container๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ๋น์ด ์์ด์ผํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฎ์ด
COPY ๊ธฐ๋ฅ์ด ์์ผ๋ฉด +1. ์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ์ํ๊ฒ ๊ตฌ์ถํ๊ณ ๊ฐ๋ฐ ์ค์ ์์ํ ๊ตฌ์ฑ์์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค.
COPY์ +1. ์ด๊ฒ์ ์ ๋ง ์ ์ฉํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ ์ฌ๋ก : swarm ๋ชจ๋์์ mysql ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ์๋น์ค๊ฐ ์์ต๋๋ค. MySQL์์ ์คํํ ์ ์๋๋ก /docker-entrypoint-initdb.d/์ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ฌํด์ผํฉ๋๋ค.
mysql ์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑ ํ ์ ์์ง๋ง ํ์ผ์ ๋ณต์ฌํ์ฌ ์ฌ์ฉํ๊ฑฐ๋ mysql์ ์ฐ๊ฒฐํฉ๋๋ค.
๋ผ์์ ์์
ํ๊ณ ์๋์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ๋ด ์๊ฒฌ์ผ๋ก๋ ๋ถํ์ํฉ๋๋ค.
๋ณต์ฌ / ์ถ๊ฐ์ +1,
์ฌ์ฉ ์ฌ๋ก :
Fluentd๋ ๋ฐํ์ ๋์ ๊ตฌ์ฑ ํ์ผ์ ์ปจํ
์ด๋๋ก ์ด๋ํด์ผํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ํ์ผ์ Jenkins Engine์ ์ํด ๋ฐํ์์ ์์ฑ๋๋ฉฐ Docker์ COPY / ADD๊ฐ ์์ผ๋ฉด ๋จ์ํ ์คํจํฉ๋๋ค.
COPY์ +1
Docker-compose ๋๋ ํฐ๋ฆฌ ์๋์ ๊ฐ ํ์ ๋๋ ํฐ๋ฆฌ์ Dockerfile์ด์๋ ์ฌ๋ฌ ๋์ปค ๋จธ์ ์์ ๊ณต์ ๊ตฌ์ฑ ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ณต์ ๊ตฌ์ฑ์ ๊ฐ ์ด๋ฏธ์ง์ ์ด๋ป๊ฒ ๋ณต์ฌํฉ๋๊น? COPY failed: Forbidden path outside the build context
์์ด Dockerfile ์ปจํ
์คํธ์์ ../
์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ docker-compose ๋น๋๋ฅผ ์คํํ ๋ docker ๋น๋ ๋จ๊ณ๋ฅผ ์คํํ๊ธฐ ์ ์ docker-compose ์ปจํ ์คํธ์์ ๊ตฌ์ฑ ํ์ผ์ ๋ณต์ฌํ๊ณ ์ถ์ต๋๋ค.
๋ฌผ๋ก ๋๊ตฐ๊ฐ๊ฐ ๊นจ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ ํ ์ ์๋ค๋ฉด ๊ธฐ์ฉ๋๋ค.
๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ข๊ฒ ๋ค์ !!
+1๋ง์ผ๋ก ๋๊ธ์ ๋ฌ์ง ๋ง์ธ์. ๋ชจ๋์ ์๊ฐ ๋ญ๋น์ ๋๋ค. ์ ๊ณต ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ์์ผ๋ฉด ๊ทธ๋ ๊ฒํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ ๋ฌธ์ ์ ์ข์์๋ฅผ ์ถ๊ฐํ์ธ์.
_ ์ด๋ค ๊ฒฝ์ฐ์๋ _ ๊ฒฐ๊ตญ _ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ ํจํด์ด๋ผ๊ณ ๋ ๋จ์ ์ผ๋ก ์ฃผ์ฅํ๋ ์ฉ๋๋ ๋ฌด์์ ๋๊น? ์ถ๊ฐ ํด๋์ ํ์ผ์ ๋ง๋ ๋ค์ ์ถ๊ฐ ํ ํ์ผ์ ์ด๋ํ๋ ๋์ ๊ธฐ์กด ํ์ผ์ ํ ์ค์ ์ถ๊ฐ ํ ์ ์์ผ๋ฏ๋ก ํ์คํ ์ ์ฉํฉ๋๋ค. ์ด ๋ฌด์๋ฏธํ๊ณ ๊ด๋ฃ์ ์ธ ์์ ํ์ผ ์์ฑ์ ์ง์ ํ ๋ฐ ํจํด์ผ๋ก, ์ฌ์ฉ์๊ฐ ๋์ปค ์์ฑ ํ์ผ์ ๊ฐ๋จํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ง ๋ชปํ๊ฒํฉ๋๋ค.
์ฌ์ฉ์๊ฐ Docker๋ก ์ ํดํ ์ผ์ํ๊ณ ์ถ๋ค๋ฉด, ๋น์ ์ด ๋ฌด์์ํ๋ ์๊ด์์ด ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒ์ ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ธ์ ๊ฐ ์ค์ฉ ํ ์ ์๋ค๋ ์ด์ ๋ง์ผ๋ก ํฉ๋ฒ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฑฐ๋ถํ๋ ๊ฒ์ ์ด๋ฆฌ์์ ์ผ์ ๋๋ค.
์ ๋ ๋น์ ์ดํ๋ ์ผ์ด ์ค์ ๋ก์ด ๊ฒฝ์ฐ์ ๋ํด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ์ ์ ๊ธฐ ๋ ๋ฌธ์ ๋ mongo.conf ํ์ผ์ด ํ๋์ docker-compose ํ์ผ์ ์ํด ์กฐ์ ๋๋ ์ธ ๊ฐ์ docker ์ด๋ฏธ์ง๊ฐ์ ๊ณต์ ๋์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค. ๊ฐ Docker ๋น๋ ํ์ ๋๋ ํ ๋ฆฌ์์ ๋์ผํ ์ง ์ด๋ป๊ฒ ํ์ธํฉ๋๊น?
์๋ฅผ ๋ค์ด ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ docker๋ ํ์ผ์ด ๋น๋ ํ๊ฒฝ์ ์ธ๋ถ์ ์๋ค๊ณ ๋ถํํฉ๋๋ค. ์๋ฅผ ๋ค์ด docker ๋น๋๋ ํด๋น ๋๋ ํ ๋ฆฌ ์ธ๋ถ์ ์์ ์ด ๋น๋๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ์ฌํ์ฑ์ด ๋ถ์กฑํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๊ฒ์ ์กฐ์ ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ํ์ผ ๋ณต์ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ docker-compose๋ฅผ ์คํํ๊ธฐ ์ ์ Makefile ๋๋ ์ ธ ์คํฌ๋ฆฝํธ์ ๊ด๋ จ์ด ์์ผ๋ฏ๋ก ์ด๊ฒ์ด docker-compose๊ฐ ํ ์์๋ ๊ธฐ๋ฅ์ธ์ง ์ฌ๋ถ๋ฅผ ๋ ผ์ํ๋ ์์ด๋์ด์ฒ๋ผ ๋ณด์์ต๋๋ค. ํ์คํ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋น์ ์ด ์ ๊ธฐํ๋ ๋ฌธ์ ๋ ๋ก์ปฌ ํ์ผ ์์ ์ ๋ฐํ์ (์์ ์๊ฐ) ์ฃผ์ ์ ๊ดํ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ๋น์ ์ดํ๋ ์ผ์์ ์ค์ ๋ก ๊ด์ฐฎ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋น์ ์ด ์์์ ๋งํ ๊ฒ์ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด ์ก๋์ง์ ๋๋ค. ๋์ปค ์ด๋ฏธ์ง๋ ํญ์ ๊ตฌ์ฑ ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋์ ์๋์ง์ ๊ฐ์ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด ํ๊ฒฝ ๋ณ์๋ฅผ ํ์ฉํ๋๋ก ๊ตฌ์ฑ ๋ ์ ์์ผ๋ฉฐ, ํด๋น ๊ตฌ์ฑ ๋๋ ํ ๋ฆฌ๋ ๋ฐํ์์ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ "์ฃผ์ "๋ ์ ์์ง๋ง, ์ด๋ ๋์ปค ์ด๋ฏธ์ง์ ์ค๊ณ์ ๋ฌ๋ ค ์์ต๋๋ค. ํ๊ฒฝ ๋ณ์ ๋ฐ ๋ณผ๋ฅจ ๋งคํ (๋ ์ปค๊ฐ ๋ฐํ์ ๊ตฌ์ฑ ์์ ์ผ๋ก ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.)
๊ทํ์ ์๊ฒฌ์ ์๋ชป ํด์ํ์ง ์์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ์ ๋ต๋ณ์ด ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@jpz- ์ด๋ป๊ฒ ๋ ๋ด ์๋ ๋๊ธ์ ์ญ์ ํ์ต๋๋ค
๋ด ์๋ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ /etc/mongod.conf
์ ๊ฐ์ ๊ตฌ์ฑ ํ์ผ์ ๋ณต์ฌํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ง์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ํ์์์ด mongo
๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ์ ์ธํ๋ ค๋ ๊ฒ์
๋๋ค.
์
๋ฐ์ดํธ : ๋๋ volumes
. 1 ~ 2 ๋
์ -๋์ ๊ฒฝํ์ผ๋ก ์ด๊ฑธ ์๋ํ๋ค๊ณ ์๊ฐํ๋๋ฐ ... ๊ด์ฐฎ์ ๋ณด์ธ๋ค.
COPY์ +1
๋๋ ์ด๊ฒ์ ๋ํ ๊ฐ๋จํ ์์ ์ ๋ง๋ค์์ต๋๋ค. docker compose ์๋น์ค์ ์ด๋ฆ์ด phpfpm
๋ผ๊ณ ๊ฐ์ ํ์ง๋ง ์ํ๋๋๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์์ ๋กญ๊ฒ ์์ ํ์ญ์์ค.
https://gist.github.com/markoshust/15efb29aa5eebf8adae402af18b2e674
์๋ ํ์ธ์, ์ด๋ฒ ํธ์ ์งํ ์ํฉ์ ์๊ณ ์ถ์ต๋๋ค. ์ด์ docker-toolbox์ ํจ๊ป Windows 10 home์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ง์ดํธ ํ์ผ์ ์ปจํ ์ด๋์ ๋ณผ๋ฅจ์ผ๋ก ๋ฌถ์ผ๋ ค๊ณ ํ ๋ ๋๋ถ๋ถ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. docker-compose์ COPY ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
COPY / ADD๋ ํ์คํ ํ์๋ฐ๋ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ ์ฌ๋ก : Dev ๋ชฉ์ ์ผ๋ก Docker์์ Graylog ์ธ์คํด์ค ์คํ. ์
๋ ฅ์ ์๋์ผ๋ก ์์ํ๋ ค๋ฉด JSON ์ฌ์์ / usr / share / graylog / data / contentpacks์ ๋ฃ์ด์ผํฉ๋๋ค.
COPY / ADD ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด YML์์ ํ ์ค๋ก ์ฝ๊ฒ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค.
์ง๊ธ ์๋ํ๊ฒํ๋ ค๋ฉด (2018 ๋ 10 ์ 16 ์ผ) ๋ณผ๋ฅจ์ ํด๋น ์ง์ ์ ๋ง์ดํธํ๊ณ ํด๋น ํด๋์ ์๋ณธ ์ฝํ ์ธ ๋ฅผ ์๊ตฌ ๋ณผ๋ฅจ์ ๋ณต์ฌํด์ผํฉ๋๋ค. ์กฐ์ฉํ๊ณ ๋ถํธํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ผ๋ก๋ถํฐ ์ด์ต์ ์ป์ ๊ฒ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋๋ฅผ ์ปจํ ์ด๋๋ก ๊ฐ์ ธ ์ค๋ ๋๊ตฌ ์ธํธ๊ฐ ์์ผ๋ฉฐ ํด๋น ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก devtools ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ธ ์ค๊ธฐ ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค. ํ ํ์๊ฐ ์์ต๋๋ค.
docker cp "${seed_file}" $(docker-compose ps -q devtools):/tmp/seed_file
๋ด ์จ์์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์, ๊ณ ์ ์คํค๋ง๋ก ๊ฐ๋ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ปดํ์ผํ์ง ์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ต์ํ ์น ๊ฐ๋ฐ ํจํด์ ์๋ฐฐ๋ฉ๋๋ค. ์ปจํ ์ด๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์ฑ ์ด์์ฑ์์ํ ๊ฒ์ด์ด์ผํฉ๋๋ค.
๋ค์์ ์ํํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ ๋๋ค.
docker-compose cp "${seed_file}" devtools:/tmp/seed_file
๋์ฒด๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ฐ์ ์ผ์ํ๋ ๊ฒ์ ์๊ธฐ ์ผ ๋ฟ์ด์ง ๋ง, ๋ฌผ๊ฑด์ ์๋ ๊ฒ๋ณด๋ค docker-compose
์ด๋์์๋ ํ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค ...
1) ์ด๊ฒ์ # 3593์ ์ค๋ณต ์ธ ๊ฒ ๊ฐ์ต๋๋ค
2) @shin์ ๋์ํฉ๋๋ค. ์ ๊ตํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ํฐ ํจํด์ ๋ฐ๋ฅด๊ณ ์๋ค๋ ๊ฒ์
๋๋ค.
3) ๊ทธ๋ฌ๋ Docker์ cp
๋ช
๋ น์ ๋ง๋ฌด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
@funkyfuture ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ฐ ํจํด์ ๋ฐ๋ฅธ๋ค๊ณ ์๊ฐ๋๋ฉด ๊ทธ๋ ์ง ์์ ์๋ฃจ์ ์ ์ ์ํ์ญ์์ค.
k8s์ ๊ฐ์ "๋ฐ์ดํฐ ์น์
"์ ์ด๋ป์ต๋๊น?
์๋ฅผ ๋ค๋ฉด :
services:
service1:
image: image.name
data:
filename1.ini: |
[foo]
var1=val1
[bar]
var2=val2
filename2.yml: |
foo:
bar: val1
๋๋ ๋์ผํ์ง๋ง volumes:
์น์
volumes:
service_config:
data:
filename1.ini: |
[foo]
var1=val1
[bar]
var2=val2
services:
service1:
image: image.name
volumes:
- service_config:/service/config
@์ ๊ฐ์ด-
์ด๊ฒ์ ๋ฌธ์ ์ ์ ์ปจํ ์ด๋๊ฐ ๋ค์ ์์ฑ ๋ ๋๋ง๋ค ์์ ์ ๋ฐ๋ณตํด์ผํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ทผ์์์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค (๋ฐ๋ผ์ "๋ฐ ํจํด"์ด๋ผ๋ ์ฉ์ด). ํ์ฅ ์ฑ์ด ๋งค์ฐ ๋ฎ๋ค๋ ์ฌ์ค์ ๋งํ ๊ฒ๋ ์์ต๋๋ค (์ปจํ ์ด๋๊ฐ 10 ๊ฐ? 20? 100?).
์ฌ๊ธฐ์ ์ค์ ๋ฌธ์ ๋ ์ผ๋ถ ์ฌ๋๋ค์ด ์ค์ ์ฌ์ฉ ์ฌ๋ก ์๋๋ฆฌ์ค์ ๋ํ ์ ํ๋ ๋น์ ๊ณผ ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ ์์ฒญ ๋ ๊ธฐ๋ฅ์ ๋๋ฌด ๋นจ๋ฆฌ ๋์ค์ปค๋ฒ๋ฆฌํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์ ๋ฐฉ๊ธ dockerhub์์ ๊ฐ์ ธ์จ ์ปจํ ์ด๋๋ก ๊ตฌ์ฑ ํ์ผ์ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค. ์๋ Dockerfile์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์์ผ๋ฉฐ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋งค์ฐ ํธ๋ฆฌ ํ ๊ฒ์ ๋๋ค (์์ ๋ค๋ฅธ ๋ ์ด์ด๋ฅผ ๋น๋ํ๋ ๋์ ์๋ํ์ง๋ง ๋ถํธํฉ๋๋ค. ๋ณ๊ฒฝ์ ๋ค์ ๋น๋ํ๊ณ ์ถ์ง ์์ต๋๋ค).
์ฌ์ฉ ์ฌ๋ก :
ํตํฉ ํ ์คํธ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํํ๊ณ ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ๊ฐ ๋ฐ๋ณต์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ์ด๋ฏธ์ง์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๊ฒ์ ์๋ํ์ง๋ง ํธ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ณผ๋ฅจ์ ํ์ฌํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ ๋กญ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์งํ๋ฉฐ ํ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ํธ๋ฆฌํฉ๋๋ค. ์คํ์ ์์ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํฉ๋๋ค. ํ์ฌ ์ด๊ฒ์ docker-compose๋ก๋ ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ค ์ผ์ด์ค๋ฅผ ์ผ๋์๋๊ณ ์์ต๋๋ค. ์ผ๋ฐ Apache ์๋ฒ์ ๊ฐ์ ๊ธฐ์ฑ ์ด๋ฏธ์ง์์ ๋ด ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๊ณ ์ถ์ต๋๋ค. ์ด๋ฏธ์ง ์์ฑ ์ค์ HTML์ ๋ณต์ฌํ๊ณ ์ถ์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ธ์ ๋ ์ง ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์์ผ๋ฉฐ ๋ณต์ฌ ์ง์๋ฌธ์ ๋ด ์ฝํ ์ธ ๊ฐ ์ ์ด๋ฏธ์ง์ ํฌํจ๋๋๋กํฉ๋๋ค.
BTW ์ ๋ ํ์ฌ docker-compose.yaml์์ dockerfiles ๋ฐ ๋น๋ ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ์ด๋ฅผ ์ํํฉ๋๋ค. ๋์ปค ํ์ผ์ด ํ์ํ์ง ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@tvedtorama-
์ฌ์ฉ ์ฌ๋ก :
ํตํฉ ํ ์คํธ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํํ๊ณ ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ๊ฐ ๋ฐ๋ณต์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ์ด๋ฏธ์ง์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๊ฒ์ ์๋ํ์ง๋ง ํธ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ณผ๋ฅจ์ ํ์ฌํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ ๋กญ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์งํ๋ฉฐ ํ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ํธ๋ฆฌํฉ๋๋ค. ์คํ์ ์์ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํฉ๋๋ค. ํ์ฌ ์ด๊ฒ์ docker-compose๋ก๋ ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๋ฐํ์์ด ์๋ ์ด๋ฏธ์ง ๋น๋ ์๊ฐ์ ํ์ผ์ ๋ณต์ฌํ๋ ค๋ ์๊ตฌ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ๊ทธ ์ฅ์ ์ ๋ ผ์ํ๊ธฐ ์ํด ๋ณ๋์ ํฐ์ผ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ๋ ผ์๋ฅผ ํผ๋ํ์ฌ ๋ฐํ์ ํ์ผ ์ฃผ์ ์ ๋ํด ๋ ผ์ ํ ์ ์์ต๋๋ค.
@ c0ze-
k8s์ ๊ฐ์ "๋ฐ์ดํฐ ์น์ "์ ์ด๋ป์ต๋๊น?
์๋ฅผ ๋ค๋ฉด :...
๋๋ ๊ทธ ๊ตฌ์ฑ์ดํ๋ ์ผ์ ์์ ํ ์ ์ํ์ง ๋ชปํ์ง๋ง ์, ๊ทธ๊ฒ์ด ํด๊ฒฐ์ฑ ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋ฐ์ด์์ ๋ (์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ก๊ทธ์ธ ์ฌ์ฉ์ ์ด๋ฆ / ๋น๋ฐ๋ฒํธ / ํฌํธ๊ฐ ๋ฌด์์ธ์ง) ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋์ปค ์ด๋ฏธ์ง (ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ)์ ์ด๋ป๊ฒ ์ฝ์ ํฉ๋๊น?
kubernetes ๋ฐ์ดํฐ ์น์ ๊ณผ ๊ฐ์ ๊ฒ์ด ์๋ ํ ์ ์์ต๋๋ค. ๋จ์ผ ์์ค ์์ค์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ๋ฌ ๋์ปค ์ด๋ฏธ์ง์์ ๋์ผํ ๋น๋ฐ์ด ์ฌ๋ฌ ๋ฒ ์ ์ง๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ํ ์ด๊ฒ์ด ์ค์ ๋ก ์ฑํ ํ ๊ฐ์น๊ฐ์๋ ์ข์ ์์ด๋์ด์ธ์ง ์๋์ง์ ๋ํ ๋ํ๋ฅผ ์งํํ๋ ๋ฐ ๋์์ด๋๋ ์ ํ ๊ธฐ์ ์ด ์์ต๋๋ค.
์ ์๊ฒ์์ด์ด ๋ชจ๋ ๊ฒ์ ์ปจํ ์ด๋๊ฐ์ ๋ถ๋ณ ๊ตฌ์ฑ ํ์ผ์ ๊ณต์ ํ๊ธฐ๋ฅผ ์ํ๊ณ , ์ธ๋ถ์์ docker-compose๋ฅผ ์คํฌ๋ฆฝํ ํ๊ณ ๋จ์ผ ์ง์ค ์์ค์ ๊ตฌ์ฑ์ ๊ฐ๊ฐ์ docker-compose ํด๋ ์๋์ Docker ํด๋. ๋ฌผ๋ก ์ ๋ Docker์ ๋ํ ๋ถ๋ณ์ฑ ์ธ์๋ฅผ ์ป์ต๋๋ค (์ : Dockerfile ๋๋ ํ ๋ฆฌ๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ์์ ํ๊ณ ์์ ํ๊ฒ ์ค๋ช ํฉ๋๋ค). ๋ฐ๋ผ์ ์๋ํ๋ฅผ ์์ฒญํ์ฌ ํด๋น ๋๋ ํ ๋ฆฌ์ ํญ๋ชฉ์ ๋ณต์ฌํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ์ด๋ฌํ ์์น์ ๋น์ถ์ด ์ฝ๊ฐ ๋ ์๊ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
ํ ๋ก ์ docker-compose๊ฐ ์ผ๋ง๋ ๋ฐฉํด๊ฐ ๋๋๊ฐ? ์ด๊ฒ์ด ๊ทธ๋ฌํ ์๋ํ๋ฅผ ์ ๋นํํ๊ธฐ์ ์ถฉ๋ถํ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ๋ฆ๊ฒ (์ : ๋ฐํ์์) ์ธ๋ถ๋ก๋ถํฐ ๋น๋ฐ์ ์ฃผ์ ํ๋ ์ฑ ์์ ํ๊ฒฝ ๋ณ์ ์ ๋ฌ ๋ฉ์ปค๋์ฆ์ ๋ถ๋ดํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฌ๊ธฐ์์ ๋ด ์์ ์ด ์ถฉ๋ถํ ์ผ๊ด์ฑ์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ์ ๋์๊ฒ ํฐ ์๋ฏธ๊ฐ ์์ง๋ง ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ ผ์ ํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์๊ฒ ๋งค์ฐ ์ ์ฉ ํ ๊ฒ์ ๋๋ค. ์ง์ฅ์์ ๋ฐ์ด๋ฌ์ค ์ํํธ์จ์ด๋ Windows 10์ด ์ปจํ ์ด๋์ ๋ณผ๋ฅจ์ ๊ณต์ ํ๋ ๊ธฐ๋ฅ์ ์ฐจ๋จํฉ๋๋ค. ๊ทธ๊ฒ์ ๊ฑฐ๋ํ ์กฐ์ง์ด๋ฉฐ ๋ค๋ฅธ ๋๋ฅ์ ์ค์ ๋ ์ ์ฑ ์ผ๋ก ์ธํด ๋ณ๊ฒฝํ๋๋ก ์ ๋ํ๋ ๊ฒ์ ์์ํ์ง ์์ต๋๋ค.
์๋ ํ์ธ์, ์ ์ฌ์ฉ ์ฌ๋ก : ์ ๋ ์คํ ์์ค Prometheus docker-compose ์ค์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค (์ ์ฅ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ ์ง ๊ด๋ฆฌํจ). ์ปจํ ์ด๋์ ๋ง์ดํธ ๋ ๊ตฌ์ฑ์ด ์์ต๋๋ค. ๋ฌธ์ : ๊ตฌ์ฑ์ ์ ๋๋ก ๋ง์ดํธ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์๊ฒฉ ์ปดํจํฐ (aws docker-machine ๋๋ CI / CD runner ๋ด๋ถ)์์ docker-compose๋ฅผ ์ํ ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ณต์ฌ / ์ฝ์ ํ๊ณ ์ถ์ต๋๋ค. RW ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๋ณผ๋ฅจ์ด ์์ต๋๋ค. RO-?
์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ ์์๋ RO ๋ณผ๋ฅจ์ ๊ฐ๋ ๊ฒ์ด ๋ค๋ฅธ ์ต์ ์ ๋๋ค.
ํ์ฌ ์๋ฃจ์ : ssh๋ฅผ ํตํด docker ํธ์คํธ์ ์ฐ๊ฒฐํ๊ณ , ์ ์ฅ์๋ฅผ ๋ณต์ / ์ ๋ฐ์ดํธํ๊ณ docker-compose up์ ์คํํฉ๋๋ค. ์ด๊ฒ์ ์๋ ์ผ์ด์ค์์ ์๋ํ์ง๋ง ์๋ํ์๋ ๊ณ ํต ์ค๋ฝ์ต๋๋ค.
+1
์ ์ค ์ผ์ด์ค : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํํ๋ ๊ฐ๋ฐ ๋์ปค ๋จธ์ ์ด ์์ผ๋ฉฐ์ด๋ฅผ ์ค์ ํ ๋๋ง๋ค ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋คํ๋ฅผ ์ค์นํด์ผํฉ๋๋ค. ์ด๋ ํจ๊ณผ์ ์ผ๋ก ๋ค์์ ์๋ฏธํฉ๋๋ค.
์ด์ ํฐ ๋ฌธ์ ๋ ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋คํ ๋ฒ์ ์ด ๋ค์ํ๊ธฐ ๋๋ฌธ์ 2 ๋จ๊ณ๋ ๊ฐ๋ฐ์๋ง๋ค ํญ์ ๋ฌ๋ผ์ง๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๊ฐ ๊ฐ๋ฐ์๊ฐ ํน์ ๋คํ ์์น / ๋ฒ์ ์ด ํฌํจ ๋ ์์ฒด ์์ฑ ํ์ผ์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. Docker๊ฐ ์์ฑํ๋ ๋์ ํน์ ํ์ผ ์์น๋ก ์ด๋ฏธ์ง๋ฅผ ์กฐ๋ฆฝํ๋๋ก ํ ๋ค์ ๋ค๋ฅธ ๋ฒ์ ์ด ํ์ํ ๋ ์ฆ์์์ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๊ฐ๋จํฉ๋๋ค. ๋ณผ๋ฅจ์ ์ํ์ง๋ ์๊ณ ๋ด ์ด๋ฏธ์ง๋ฅผ ๋กค๋งํ๊ณ ์ถ์ง๋ ์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ๋ง๋ ํ ์์ํ๊ธฐ ์ ์ ์ปจํ ์ด๋์ ๊ฐ๋จํ ๋ฐฉ์ด์ฉ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๊ณ ์ถ์ต๋๋ค.
์ด๊ฒ์ด ์ฌ์ ํ ๋ฌธ์ ์
๋๊น?
๋งค์ฐ ๊ธด ์ค์ ํ์ผ์ด์๋ django ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ต๋๋ค. ๋์๊ฒ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ๋จ์ผ ๊ตฌ์ฑ ํ์ผ์ ๊ฐ ์ปจํ
์ด๋์ ๋ณต์ฌํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์
๋๋ค.
ENV๋ก ๋ชจ๋ ์ค์ ์ ์ ๋ฌํ๋ ๊ฒ์ ๋์๊ฒ ๋ฐ ํจํด์
๋๋ค. ๋ง์ ์ฝ๋๊ฐ ํ์ํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ณ ๋จ์ผ ๋ณต์ฌ ๋ช
๋ น์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋๋ # 6643์ ์ด์๊ณ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์ํฐ ํจํด์ผ๋ก ๊ฐ์ฃผ๋๋์ง์ ๋ํ ํผ๋๋ฐฑ์ ์ํฉ๋๋ค. ํนํ, ์๋ง์ ๊ตฌ์ฑ ํ์ผ์ ์ฆ์ ์ถ๊ฐ / ์์ ํด์ผํ๋ ํ๊ฒฝ์์.
@์ ๊ฐ์ด-
์ด๊ฒ์ ๋ฌธ์ ์ ์ ์ปจํ ์ด๋๊ฐ ๋ค์ ์์ฑ ๋ ๋๋ง๋ค ์์ ์ ๋ฐ๋ณตํด์ผํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ทผ์์์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค (๋ฐ๋ผ์ "๋ฐ ํจํด"์ด๋ผ๋ ์ฉ์ด). ํ์ฅ ์ฑ์ด ๋งค์ฐ ๋ฎ๋ค๋ ์ฌ์ค์ ๋งํ ๊ฒ๋ ์์ต๋๋ค (์ปจํ ์ด๋๊ฐ 10 ๊ฐ? 20? 100?).
์ฌ๋ฌ ์ปจํ
์ด๋์์ docker-compose exec
๋ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
--index=index index of the container if there are multiple
instances of a service [default: 1]
cp
๋์ผํ ๋์์ ์๋ํด์ผํ์ง ์์ต๋๊น?
IMHO exec
๋ cp
๋งํผ ์์์ ์
๋๋ค. ํ์ง๋ง ์ ๋ ํญ์ "๊ฐ๋ฐ"๋ช
๋ น์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ์ ์ผ์์ ์ด์ด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น?
์ด ๊ธฐ๋ฅ์ ์์ฒญํ์ฌ์ด ๋ฌธ์ ๋ฅผ ๋๋ฌด ๋นจ๋ฆฌ ๊ณ ์ณ์ ๊ทผ์์์ ์ด๋ผ๊ณ ์ฌ๊ธฐ๋ ๋ง์ ๊ฐ๋ฐ์์ ๋ํ ์๊ฒฌ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ์ฝ๊ฐ ๊ฑฐ์น ๊ณ ๊ฒธ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ ๊ฐ์ ๊ฐ๋ฐ์์ ๋ฐฐ์ด ๊ฒ์ด ํ๋ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ํํธ์จ์ด๊ฐํ๋ ์ผ์ด ์๋๋ผ ์ฌ์ฉ์๊ฐํ๋ ์ผ์ด ์ค์ํฉ๋๋ค.
๋ถ๋ช ํ, ๋๋ ๋น์ ์ด ์ผ์ด ๋ฏธ์ณ๊ฐ๋ ๊ฒ์ ๋ง๋ ์ญํ ์ด ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ๋น์ ์ ๋น์ ์ ๋ฐ๋ผ ๋๊ตฌ๋ฅผ ์๋ชป ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ฌ๋์ด ๊ทธ๋ ๊ฒ ์์ํ๊ณ ๋ชจ๋ ์ง์ฅ์ด ํ๋ฆด ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์ ๋ณธ ๋ชจ๋ ํน์ํ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ ๋งค์ฐ ์ ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ํน์ํ ๊ฒฝ์ฐ์ ๋๋ถ๋ถ์ ํ๋ก๋์ ์์คํ ์์ ๋ฐ์ํด์๋ ์๋๋ฉฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ ๊ฐ ์ผ๋ง ์ ์ ์ค๋ช ํ ์ ๊ฒฝ์ฐ์ ๊ฐ์ด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ฌ์ฉ์ ์ง์ ํ๊ณ ์ฌ์ฉํ ์์๋ ์ปจํ ์ด๋์์ ํน์ ํ์ผ์ ์คํํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ณผ๋ฅจ ๋งคํ. ๋๋ถ๋ถ์ ์๋ ์คํค๋ง, ๋ฐ์ดํฐ ๋๋ ๊ตฌ์ฑ ํ์ผ์ ๊ตฝ๊ณ ์ถ์ง ์๊ณ ๋ณผ๋ฅจ ๋งคํ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋ถ๋ช ํ ๋งํ๊ณ ์์ผ๋ฏ๋ก "๊ทผ์"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ง ํผ ๋ถํธํ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ง์ ํ ๋๋ ์ ์คํ๊ฒ ๋งํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค ...
๋ค์ ๊ฐ์ ธ ์ค์. ์ฌ๊ธฐ์ ์ ์งํ ๊ธฐ์ ์ ์ธ ์ง๋ฌธ์ด ์์ต๋๋ค. ๋์ปค ์คํ์๋ "configs"์ต์ ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ๋์ปค ๊ธฐ๋ฅ์ด์ง๋ง ์ปจํ ์ด๋๊ฐ ์๋ ์๋น์ค ์ฉ์ ๋๋ค. ์๋น์ค ์์ค์ด ์๋ ์ปจํ ์ด๋ ์์ค์์ ์๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์ป์ ์์๋ ๊ฐ๋ฅ์ฑ์ ๋ฌด์์ ๋๊น? Docker ์คํ์ ๊ตฌ์ฑ ํ๋ก๋น์ ๋์ ์ด๋ป๊ฒ ๊ตฌํํฉ๋๊น? ํด๋น ๊ตฌํ์ docker-compose๋ฅผ ์ํด ๋ณต์ ํ ์ ์์ต๋๊น?
์ฌ๊ธฐ์ ์ธ๊ธ ๋ ์ฌ์ฉ ์ฌ๋ก์ ์ ๋ฐ ์ด์์ด ๊ตฌ์ฑ์ ๊ดํ ๊ฒ์ด๋ฏ๋ก ๊ฐ๋ ค์ด ๋ถ๋ถ ๋ง ๊ธ์ด๋ ๋ง์ ์ฌ๋๋ค์ด ๋ง์กฑํ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ๊ฐ๋จํ ์ฌ์ฉ ์ฌ๋ก๋ Google์ ๋๋ฉ์ธ ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ฐ์ ๊ฒ์ ๋๋ค. ์๋ ํ๋ ์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Google์์ ํ์ธํ ํ์ผ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ฒํ๋ ค๋ฉด ์์ ํ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ผํฉ๋๋ค.
๋ํ ์ฌ๋ฌผ์ด "๋ฐ ํจํด"์ด๋ผ๋ ๋ง์ ๊ฑฐ์ ๋ง์ด๋์ง ์์ผ๋ฉฐ ์๋ฆฌํธ์ฃผ์์ ๋์๊ฐ๋ฉ๋๋ค.
ํธ์ง : yikes, ๋ ์ฝ๊ธฐ, ๊ทธ๊ฐ ๋ ์ด์ ๊ด๋ฆฌ์๊ฐ ์๋ ์ ์๊ฒ ๊ฐ์ฌํฉ๋๋ค
๋ฐ๋ผ์ ์์ ๊ตฌ์ฑ ํ์ผ์ ๋ฏธ๋ฆฌ ๋น๋ ๋ ์ด๋ฏธ์ง (์ : nginx
๋๋ mariadb
)์ ๋ณต์ฌํ๋ ค๋ฉด ์ด์ ๋ด ์ด๋ฏธ์ง ๋น๋ ์ค์ ์ ๊ด๋ฆฌํ๊ณ ๋ณต์ ํด์ผํ๋ค๊ณ ๋ง์ํ์
จ์ต๋๋ค. ์ฌ์ฉ ๋ ๋์คํฌ ๊ณต๊ฐ (์๋ณธ ์ด๋ฏธ์ง ๋ฐ ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง)?
์ด๊ฒ์ ๊ธฐ๋ฅ์ด์ด์ผํฉ๋๋ค.
์ฌ์ฉ ๋ ๋์คํฌ ๊ณต๊ฐ ๋ณต์
Docker๋ฅผ ์ฌ์ฉํ ๋๊ฐ ์๋๋๋ค.
๋๋ ๊ทธ๊ฐ ๋งํ ๊ฒ ์ค์์ ๊ฐ์ฅ ์ฌ์ํ ๊ฒ ์ค ํ๋๋ฅผ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ ์ข์ํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ฅ์ด์ด์ผํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ด๊ธฐ ๋๋ฌธ์๋ ์ปค๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ์ฌ๋๋ค์ด ์ฌ๊ธฐ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ์ฅํ๊ณ ์ฑ์ฅํ ๊ฒ์ด๋ฉฐ ์ฌ๋๋ค์ ์์์ผ๋ก ์ธํด ์กด์ฌํ๋ค๊ณ ๊ธฐ๋ํ ๊ฒ์ ๋๋ค.
๋๋ ๊ทธ๊ฐ ๋งํ ๊ฒ ์ค์์ ๊ฐ์ฅ ์ฌ์ํ ๊ฒ ์ค ํ๋๋ฅผ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ ์ข์ํฉ๋๋ค.
์ ํจํ์ง ์์ ์ธ์๋ ์ด์ ๊ฐ์ด ๊ธฐ๋ก๋์ด์ผํฉ๋๋ค.
์ ๋ ์ฌ๊ธฐ์ "๋ฐ ํจํด"์ฃผ์ฅ์ด ํน์ ๋น์ฆ๋์ค ์ ๋ต ( @washtubs ํฌ์ธํธ ์ฐธ์กฐ)์์ ์ ํจ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋์ด ์ ๋ต์ ๋์ํ์ง ์์ ์ ์์ง๋ง ์ธ์ ๊ณต๊ฒฉ์ ์ ๋นํํ์ง ์์ต๋๋ค. ๊ฒฐ๊ตญ docker-compose
๋ํ ๋์์ ๊ตฌํํ ์์๋ ๊ฒ์ docker-py
๋ํ @ shin-์ ๊ณผ๊ฑฐ ๋
ธ๋ ฅ์
๋๋ค.
์ด๋ค "๋ฐ ํจํด"์ฃผ์ฅ? ๋ ผ์์ด ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ค์ ๋ ผ๋ฆฌ๊ฐ์๋ "์๋์ค, ์ํฐ ํจํด์ด๊ธฐ ๋๋ฌธ์", ๊ทธ์ ๊ทธ๊ฒ์ ๋ท๋ฐ์นจํ์ง ์๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค. ์ฌ๋๋ค์ด ์ต์ ์ ์๋๋ฆฌ์ค๋ฅผ ๋จธ๋ฆฟ์์ผ๋ก ์๊ฐํ๊ณ , ์๋๋ฆฌ์ค๊ฐ ๋ฐ ํจํด์ด๋ผ๊ณ ๊ฒฐ์ ํ ๋ค์, ์ด๋ฅธ๋ฐ ๋ฐ ํจํด ์๋๋ฆฌ์ค์ ๋ํด ๊ธ์ ์ฐ์ง๋ ์๊ณ ๋ชจ๋ ๊ฒ์ ๊ธฐ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๊ฒ์ ๋จ์ง ์๋ฆฌํธ์ฃผ์์ ๋๋ค. ์ฌ๊ธฐ์ ์ถ๊ฐํ์ง ์์ ์ด์ ๊ฐ ์ผ๋ง๋ ์ฐ์ค๊ฝ ์ค๋ฌ์ด์ง์ ๋ํ ๋ง์ ์๊ฒฌ์ด ์์ผ๋ฉฐ ๋ชจ๋ ๋ฌด์๋ฉ๋๋ค.
์์๊ณผ ๋ ผ๋ฆฌ๋ ๋น์ ์ ๊ฐ์ ์ด๋ ์๋ฆฌํธ์ฃผ์์ ๊ด์ฌ์ด ์์ต๋๋ค. ๋๋ ๋น์ ์ด ๋ง๋ ์ํฐ ํจํด.
์, @robclancy , ์๋ฏผ FFS๋ก ์ ์งํ์ญ์์ค. ๋๋์ด ๊ธฐ๋ฅ์ ์ํ์ง๋ง, ๋น์ ์ด ํ ๋ชจ๋ ๊ฒ์ด ๊ด๋ฆฌ์์๊ฒ ๋ฅ์ ๋งํ๋ ๊ฒ์ด๋ผ๋ฉด, reddit์ ์ฌ์ฉํ์ญ์์ค. @funkyfuture ์ ์ด์ ์์ ์ด ์์ ํ ๋ณด์ฅ๋ฉ๋๋ค.
๊ฒฐ๊ตญ docker-compose์ ๋์์ ๊ตฌํํ ์์๋ docker-py์ ๋ํ @ shin-์ ๊ณผ๊ฑฐ ๋ ธ๋ ฅ์ ๋๋ค.
๋๋ ๋ถ๋ช ํ ๋น์ ์ด ์ ์ํ๋ ๊ฒ์ด๋ผ๋ฉด, ํนํ ๊ทธ๋ฌํ ๋ฏธ์ธํ ํฅ์์ ์ํด docker-compose์ ํฌํฌ๋ฅผ ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ์ผ์ด๋ ์์๋ ์ ์ผํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด๋ฉฐ ์ปค๋ฎค๋ํฐ์ ์ข์ง ์์ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ PR์ ์ ์ถํ๋ฉด ์ค์ ๋ก ๊ณ ๋ ค๋ฉ๋๊น? ์๋๋ฉด ๋์ปค ์๊ณก ํ์ด ๋ฐ์๋ค์ด์ง ์๊ฒ ๋ค๊ณ ๋จํธํ๊ฒ ๊ฒฐ์ ํ ๊ฒ์ ๋๊น? ๋์ปค ์คํ ๊ตฌ์ฑ ๊ณผ ํธํ๋๋ ๊ตฌ์ฑ ์น์ ์ ์ถ๊ฐํ๋ ๊ณผ์ ์์ ๊ณ ๋ คํ ์ฌํญ์ด ์์ต๋๊น?
์ด๊ฒ์ ๋ ์ผ์ ๋ฒ์ด๋ฌ์ต๋๋ค ... ์ค๋ช ์ด์๋ '๋ฐ ํจํด'์ '๋ฐ ํจํด'์ ๋ฐ๋ฐ ํ ์์๋ ๋งค์ฐ ๊ด๋ฒ์ํ ์ ์๋ก ๋ฐ๊ฟ๋๋ค. '์ํฐ ํจํด'์ด ์ด๋์ชฝ์ ์๋์ง ๋ช ํํ ๋ฐฉํฅ๋ ์์ต๋๋ค. docker ๋๋ docker-compose.
๋ฐ ํจํด ์๋ต์ ๋ํ ๋ช ํํ ์ ์๋ ํ์์ ์ด๊ณ ๋ง์ ํ๊ฐ๋ฅผ๋ฐ์ ๊ฒ์ ๋๋ค.
์ปค๋ฎค๋ํฐ๋ ๊ณ์ ์ฑ์ฅํ ๊ฒ์ด๋ฏ๋ก ์ค์ ๋ ์ ์๊ฐ ์กด์ฌํด์ผํฉ๋๋ค.
Docker compose ์คํ์์ ์คํ๋๋ ์ ํจ์ค ํ์ดํ ๋ผ์ธ์์ ์์ฑ ๋ ์ํฐํฉํธ๋ฅผ ๋ณต์ฌํ๋ ๋ฐ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ปจํ
์ด๋ ์ด๋ฆ์ ์์ ์ผ ์ ์์ผ๋ฏ๋ก docker cp
์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค๋ ๋๋ ์ฌ์ฉํด์ผํฉ๋๋ค
docker cp $(docker-compose -f docker-compose.development.ci.yml ps -q test):/app/tests_output ./tests_output
volumes: - ./folder_on_host/ :/folder_in_container/
๊ฐ์?
๋ด compose ํ์ผ์์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํธ์คํธ์์ ์ปจํ ์ด๋ (COPY์ ๋์ผ)๋ก ํ์ผ์ ๋ณต์ฌ ํ ์ ์์ต๋๋ค.
์ ๋ ๋๊ฐ์ดํ๋ ค๊ณ ํฉ๋๋ค. csv ํ์ผ์ด์๋ ํด๋๊ฐ ์์ผ๋ฉฐ logstash์ ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค.
์ด๋ป๊ฒ ํ ์ ์์ต๋๊น? ๋๋ ์ปจํ
์ด๋์ ์ด๋ ํด๋?
ํ์ฌ ๋๋ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
./path/to/storage:/usr/share/logstash/ ๋ฐ์ดํฐ : ro
์ด๋ค ์ ์์ด๋ผ๋ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@ shin-์ด ํฐ์ผ์ ์ด์ 1.5 ๋ ์ด๋์์ต๋๋ค. 160 ๋ช ์ ์ฌ๋๋ค์ด ๋น์ ์ด ํ๋ ธ๋ค๊ณ ๋งํ ๋-์๋ง ๊ทธ๋ ์ต๋๋ค.
์ด๊ฒ์ด ๊ตฌํ๋์ด์ผํ๋ค๊ณ ํ์ ํ๊ธฐ ์ํด ๋ ๋ฌด์์ด ํ์ํฉ๋๊น?
๊ณ ๊ฐ์ ๋ง์ ๋ฃ์ง ์๋ @isapir ๋ ๊ณง ์ฌ์ ์ ์ค๋จํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๊ทธ๋์ ๊ฐ๊น์ด ์ฅ๋์ ์์ฐ ์ค๋น๊ฐ ๋ ๋์ปค ๋์์ ๋ณด๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@ shin-์ด ํฐ์ผ์ ์ด์ 1.5 ๋ ์ด๋์์ต๋๋ค. 160 ๋ช ์ ์ฌ๋๋ค์ด ๋น์ ์ด ํ๋ ธ๋ค๊ณ ๋งํ ๋-์๋ง ๊ทธ๋ ์ต๋๋ค.
๐ ๐คฃ ๐ฏ ๐ฅ ๐ฒ ๐ฎ
๋๋ ๋ ์ด์ ๊ด๋ฆฌ์๊ฐ ์๋๋๋ค. ๋ด๊ฐ ๋ ์ด์ ์ ์ด ํ ์์๋ ์ผ์ ๋ํด @ -ing์ ์ค์งํ์ญ์์ค.
@sfuerte ์ด๋ฏธ Docker-Compose๋ฅผ ๋์ฒด ํ Kubernetes๋ผ๋ ์์ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ๋ํ ํ๋๊ฐ ๋ ๊ธ์ ์ ์ด์ ๋๋ผ๋ฉด ๊ทธ๋ฐ ์ผ์ด ์ผ์ด ๋ฌ์๊น์?
๊ทธ๋ค์ ์ ํ์ด์ ๋์ํ๋ ค๋ฉด ์ ํ์ด๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ค์ด ์ฒ๋ฆฌ ํ ์์๋ ์ ๋ถ์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์์ ํ pro-pattern
์
๋๋ค. ๊ทธ๋ ๊ฒํด์ผํฉ๋๋ค. ์ฐจ์ด์ ์ ๋ด๊ฐ ์ด๋ฆฌ์์ ์ผ์ ๋ง๋ค์์์๋ ๋ถ๊ตฌํ๊ณ ์ด ๋ฌธ์ ์๋ ๋ถ๋ช
ํ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก ์ธ ๋ฐฉ์์ผ๋ก ์ด๊ฒ์ ์ฅ์ ์ ๋ณด์ฌ์ฃผ๋ ๋ง์ ์๊ฒฌ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ anti-pattern
์ ๋จ์ผ ์ธ์คํด์ค๊ฐ ์์ต๋๋ค.
@ shin- ํ์ค์ ๊ทผ๊ฑฐ์์ด์ด ํ์๋ฆฌ ๋ฐ ํจํด ์ฐ๋ ๊ธฐ๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ํ๊ทธ๊ฐ ๋ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ด ์ผ์ผํจ ๊ฒ์ ๋ํด ์ธ์ง ๋ง์ธ์.
k ์ฌ๋ฐ๋ค
๋ด ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ dev ์ฉ compose ํ์ผ 1 ๊ฐ์ ํ๋ก๋์ ์ฉ compose ํ์ผ 1 ๊ฐ๋ฅผ ๊ฐ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋์ปค ํ์ผ์ "๋ณผ๋ฅจ"์ ์ง์ ํ ์ ์์ง๋ง ๋์ปค ํ์ผ์ "๋ณต์ฌ"๋ฅผ ์ง์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ ์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๊น? ๋ด๊ฐ ๋ญ๊ฐ ๋น ์ก๋์?
@ shin- ์ด๊ฒ์ ์ํฐ ํจํด์ ๋๊น? ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐ ํ์๊ฒ ์ต๋๊น?
@hems , ์๋ฒฝํ ์ธ์์์๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋
๋ฆฝํ ๋์ปค ์ด๋ฏธ์ง๋ก ๋ฐฐํฌ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ ๊ฒฝ์ฐ ๋ฐฐํฌํ๋ ค๋ ์์ค ์ฝ๋๊ฐ Dockerfile
์ผ๋ถ ์ฌ์ผํ๋ฏ๋ก ์ด๋ฏธ์ง์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ด ํฌํจ๋ฉ๋๋ค. ๋ฐ๋ผ์ Dockerfile
์ ์์ค๋ฅผ / var / www์ ๋ฃ์ผ๋ ค๋ฉด
COPY my-app-src /var/www
์์ค๋ ํน์ ํ๊ฒฝ์ด ์๋๋ฏ๋ก Docker ์ด๋ฏธ์ง์ ์ํฉ๋๋ค. ์ฌ์ด.
์ฐ๋ฆฌ ๋๋ถ๋ถ์ ๊ธฐ์กด ์ด๋ฏธ์ง๊ฐ ํน์ ๋์ปค ๊ตฌ์ฑ ๊ตฌ์ฑ์์ ์ ์๋ํ๋๋ก ์ปจํ ์ด๋์ ํ๊ฒฝ ๋ณ ๊ตฌ์ฑ ํ์ผ์ ํฌํจํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์์ ํ์ผ์์ํ ๋ณผ๋ฅจ์ ๋ง๋ค๊ฑฐ๋ ์ ์ด๋ฏธ์ง๋ฅผ ๋กค๋งํ์ง ์๊ณ ๋์ด๋ฅผ ์ํ ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค.
docker-compose ํ์ ๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ ์ง์งํ๊ณ ๊ณต์ ํ๊ฒ ์ดํด๋ณด๊ณ ์ต์ข ํ๊ฒฐ์ ๋ด๋ฆด ์ ์์ต๋๊น? ์ด ๋ฌธ์ ๋ ์์ํ ์ด๋ ค ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ์ค์ํ์ง๋ง ๊ฐ์ธ์ ์ผ๋ก ์๋ฆผ ์์ ์ ์ง์ณค์ต๋๋ค.
COPY my-app-src /var/www
๊ทธ๊ฒ ์ ๊ฐ ๋งํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ ๊ณผ์ ์์ ๋์ปค ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ VOLUMES๋ฅผ ์ด๋ฏธ์ง์ ๋ง์ดํธํ๊ณ ํ๋ก๋์ ๋น๋ ์ค์ ํ์ผ์ ์ด๋ฏธ์ง์ ๋ณต์ฌํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ณผ๋ฅจ์ ๋ณต์ฌํ๊ณ ๋ง์ดํธ ํ ์ ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. docker-compose ํ์ผ์ ์ฌ์ฉํ๋ฏ๋ก dev ์ฉ compose ํ์ผ 1 ๊ฐ์ ํ๋ก๋์ ๋น๋ ์ฉ ํ์ผ 1 ๊ฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
์ ๋ Compose๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ํ์์ ์ผํ๊ณ ์์ผ๋ฉฐ์ด ํ ๋ก ์ ์ฐธ์ฌํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์์ํ๊ธฐ ์ํด Dockerfiles ๋ฐ Compose ํ์ผ์ ์ฑ ์์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
Dockerfile์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ์ํ ๋ ์ํผ์ด๋ฉฐ ์๋น์ค ์๋์ ํ์ํ ๋ชจ๋ ๋ฐ์ด๋๋ฆฌ / ๊ธฐํ ํ์ผ์ ์ถ๊ฐํด์ผํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์์ธ๊ฐ ์์ต๋๋ค : ๋น๋ฐ (์ : ์๊ฒฉ ์ฆ๋ช ), ๊ตฌ์ฑ (์ : ๊ตฌ์ฑ ํ์ผ) ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ํ ๋ฐ์ดํฐ (์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ). ๋น๋ฐ ๋ฐ ๊ตฌ์ฑ์ ์ฝ๊ธฐ ์ ์ฉ์ ๋๋ค.
์์ฑ ํ์ผ์ ์๋น์ค ์ธํธ๊ฐ ๋ฐฐ์น๋๊ณ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Compose ํ์์ ๋จ์ผ ์์ง (์ : docker-compose
)๋ฟ๋ง ์๋๋ผ Swarm ๋ฐ Kubernetes์ ๊ฐ์ ์ค์ผ์คํธ๋ ์ด์
๋ ํ๊ฒฝ์๋ ์ฌ์ฉ๋ฉ๋๋ค. Compose ํ์์ ๋ชฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ฒ ์์ฑํ๊ณ ๋ก์ปฌ์์ ํ
์คํธ ํ ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฑฐ์ ๋๋ ์ ํ์์ด ์กฐ์ ๋ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๊ฒ์
๋๋ค. ์ด ๋ชฉํ๋ ๊ฐ ํ๊ฒฝ์ด ๋ณผ๋ฅจ ๋ฐ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋ก ์ธํด ํ์์์ ๋ณ๊ฒฝํ ์์๋ ์ฌํญ์ ์ ํํฉ๋๋ค.
์ด์ ๊ฐ์ด Dockerfile ๋ฐ Compose ํ์ผ์ ์ฑ ์์ ์ค์ด๋ฉด ๊ฐ ์ปจํ ์ด๋ ์ด๋ฏธ์ง (Dockerfile)์ ๋ด์ฉ, ์๋น์ค๊ฐ ๋ฐฐํฌ๋๊ณ ์ํธ ์์ฉํ๋ ๋ฐฉ์ (Compose ํ์ผ)๊ณผ ๊ฐ์ ์ฐ๋ ค ์ฌํญ์ ์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
์ด์ ์ด๋ฏธ์ง์ ์ ์ฅํ๋ ํญ๋ชฉ์ ๋ํ ๊ฐ ์์ธ๋ฅผ ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ๋น๋ฐ์ ๊ฒฝ์ฐ, ๋๋ ๋นํ ์ ์๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ ๋ ์ ์์ผ๋ฏ๋ก ์ด๋ฏธ์ง๋ก ๊ตฌ์์ง๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Docker Secrets ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๋ฐฐํฌํ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ์๋ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐํ์์ ์ปจํ
์ด๋์ tmpfs ๋๋ ํ ๋ฆฌ์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธ๋๋ ํ์ผ์ ์๊ฒฉ ์ฆ๋ช
์ ์ ์ฅํ ์ ์๋ค๋ ์๊ฐ์
๋๋ค. ์ด ๋๋ ํ ๋ฆฌ๋ ํญ์ /run/secrets/
์ด๊ณ ํ์ผ์ ๋น๋ฐ์ ์ด๋ฆ์ด๋ฉ๋๋ค. ๋ณด์ ๋น๋ฐ์ Swarm, ์์ง ๋ง ( docker-compose
) ๋ฐ Kubernetes์์ ์ง์๋ฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ ๋๋ ๋ถํธ ์คํธ๋ฉ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ Docker Configs๊ฐ ์์ต๋๋ค. ์ด๊ฒ๋ค์ ๋น๋ฐ๊ณผ ๋น์ทํ๊ฒ ์๋ํ์ง๋ง ์ด๋์๋ ์ฅ์ฐฉ ํ ์ ์์ต๋๋ค. Swarm ๋ฐ Kubernetes์์๋ ์ง์๋์ง๋ง docker-compose
์์๋ ์ง์๋์ง ์์ต๋๋ค. ์ด์ ๋ํ ์ง์์ ์ถ๊ฐํด์ผํ๋ฉฐ์ด ๋ฌธ์ ์ ๋์ด๋ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ธ๋ถ์ ์ ์ฅํด์ผํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ์ด ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ผ๋ฏ๋ก ์ด์ ๋ํด์๋ ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค.
๊ทธ ํ๋ ์์ผ๋ก ๋ช ๊ฐ์ง ์ง๋ฌธ์ ๋ตํ ์ ์์ต๋๋ค.
copy
ํ๋๋ฅผ ์ถ๊ฐํฉ๋๊น? ์๋์, ์ค์ผ์คํธ๋ ์ด์
๋ ํ๊ฒฝ์์๋ ๋ง์ด๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.docker-compose
์ configs
์ง์์ ์ถ๊ฐํฉ๋๊น? ๋ค, ๊ทธ๋์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.docker-compose cp
ํ์๊ฒ ์ต๋๊น? ์์ง ํ์คํ์ง ์์ ์๋ ์์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก docker container cp
์ ๋ณ์นญ์
๋๋ค.๋ฐ๋ผ์ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์์๋ ๋ช ๊ฐ์ง ๋๊ตฌ๊ฐ ์์ต๋๋ค.
๋๋ ๊ทธ ๋๊ตฌ๋ค์ด์ด ์ค๋ ๋์์ ์ ๊ธฐ ๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํ๋ค.
์ด ์ค์ ๊ฝค ๋จ๊ฒ์ต๋๋ค. ๊ฐ GitHub ํธ๋ค ๋ค์๋ ์ค์ ์ด์์๋ ์ฌ๋์ด ์์ผ๋ฉฐ ๊ทธ๋ค์ ์๋ง๋ ์ต์ ์ ๋คํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค (์ข์ ๊ฐ์ด ๋ํ๋๋๋ผ๋). ์ฐ๋ฆฌ๋ ๋ชจ๋ Compose์ ์ด์ ์ ์ด๋ฉฐ ํ๋ก์ ํธ๊ฐ ๊ณ์ ๋ฒ์ฐฝํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
docker-compose cp
ํ์๊ฒ ์ต๋๊น? ์์ง ํ์คํ์ง ์์ ์๋ ์์ต๋๋ค.
docker-compose exec
์ ๊ฐ์ ์ ์ฉํ ํธ๋ฆฌํจ์ ์ฐพ์ ์ ์์ต๋๋ค.
@ chris-crone ๋๋ผ์ด ์๋ต, ๊ฐ์ฌํฉ๋๋ค!
๋ชจ๋ ์ฌ๋์ ๋๋ณํ์ง๋ ์์ง๋ง configs
์ง์์ด ์ฌ๊ธฐ์ ๋ํ ๋๋ถ๋ถ์ ๊ด์ฌ์ ์ถฉ์กฑ ์ํจ๋ค๋ ์ธ์์๋ฐ์ต๋๋ค. ์ด๊ฒ์ ๋ํ ์ด์๊ฐ ์ด๋ฆด๊น์?
๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ง ๋์์ ์ ๊ณตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๊ธ๊น์ง ๋ค๋จ๊ณ ๋น๋์ ๋ํด ๋ชฐ๋์ต๋๋ค.
configs
์ง์์ด ์ฌ๊ธฐ์ ๋ํ ๋๋ถ๋ถ์ ๊ด์ฌ์ ์ถฉ์กฑ ์ํจ๋ค๋ ์ธ์์ ๋ฐ์์ต๋๋ค.
๋๋ ์ฌ๊ธฐ์ ๋๋ค์๊ฐ Swarm์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ์๊ฐํ๊ณ config
๊ธฐ๋ฅ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์์ฌํฉ๋๋ค.
์, ํ์ฌ Swarm์ด ํ์ํ์ง๋ง @ chris-crone์ ์๊ฒฌ์์ ...
์ด๋ค์ Swarm ๋ฐ Kubernetes์์ ์ง์๋์ง๋ง docker-compose์์๋ ์ง์๋์ง ์์ต๋๋ค. ์ด์ ๋ํ ์ง์์ ์ถ๊ฐํด์ผํ๋ฉฐ์ด ๋ฌธ์ ์ ๋์ด๋ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
... ๋๋ ์ด๊ฒ์ด docker-compose์์ ๊ตฌํ ๋ ์ ์๋ค๋ ๊ฒ์ ์ฝ๊ณ ์์ต๋๋ค (sans Swarm)
Compose ํ์์ ๋ชฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ์์ฑํ๊ณ ๋ก์ปฌ์์ ํ ์คํธ ํ ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฑฐ์ ๋๋ ์ ํ์์ด ์กฐ์ ๋ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค.
๋ณต์กํ ์ฑ์๋ ์ฆ์์์ ์กฐ์ ํด์ผํ๋ ๊ตฌ์ฑ ํ์ผ์ด ์๋นํ ๋ง์ ์ ์์ต๋๋ค. ์ง๊ธ ๊ฐ์ฅ ํจ์จ์ ์ธ (์๊ฐ ๋ฐ ๋น์ฉ ํ๋ช ํ) ๋ฐฉ๋ฒ์ ๋ณผ๋ฅจ ํค๋ฅผ ์ฑ์ฐ๋ ๊ฒ์ ๋๋ค (์ ํํ ์ฌ๋์ด ์ฌ๋ฌ ๊ตฌ์ฑ์ ํ ์คํธํ๋ ๋์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฐ๋ฐ ์๊ฐ์).
Swarm ๋ฐ config๋ ๋์ด๋ ์ฌ๋ฌ ์ฌ์ฉ ์ฌ๋ก์ ์ค์ ๋ก ์๋ตํ์ง ์์ต๋๋ค. compose๊ฐ ์ด๋ฏธ docker์์ ํ ์์๋ ์์ ์ ์ํํ๊ณ ์๊ธฐ ๋๋ฌธ์ "๋ถ๋ฆฌ ์ฐ๋ ค"๋ ์ ์ฉ ํ ์ ์์ง๋ง ๋จ์ํํฉ๋๋ค. ๋ํผ๋ ๋ถ๋ฆฌ๊ฐ ์๋๋๋ค ... ์ฐ๋ฆฌ๋ ๋น์ ์๊ฒ ์กฐ๊ธ ๋ ํ์ฅํ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ์ ๋๋ค ...
https://github.com/docker/compose/issues/6643
๊ทธ๊ฒ์ผ๋ก ํดํค๋ฅผ ์ป์ผ์ญ์์ค .. ์ ํค ์๋์ ๋ชจ๋ ํ์ผ์ด ๋จ์ผ ๋ณผ๋ฅจ์ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋๊ณ ๊ฐ๊ฐ์ ๋ด๋ถ ๊ฒฝ๋ก์ ๋งคํ๋๋ ๋ณผ๋ฅจ ๊ธฐ๋ฅ์ ํ์ฅํ์ญ์์ค.
์ฌ๊ธฐ์ ์๋ฒฝํ๊ฒ ์ ํจํ ๋ ๊ฐ์ง ์๋๋ฆฌ์ค๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋๋
๊ฐ๋ฐ ํ๊ฒฝ. ์ฌ๋๋ค์ ์์ค๋ก ์ ์ฐํ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค.
์ด๋ฏธ์ง์ ์ฝ๋๊ฐ ํ์ฌ๋์์ต๋๋ค. ์์ค ์ฝ๋๋ ๊ฐ๋ฐ์ ๋ฐ๋ผ ์งํํฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ์ง์์ ์ผ๋ก ์ฌ ๊ตฌ์ถ ํ ์ ์๊ฑฐ๋ ๋ญ๋นํฉ๋๋ค.
์์ฒญ๋ ์๊ฐ. ๊ทธ๊ฒ ๋ด ์๋๋ฆฌ์ค์ด๊ณ ๋๋ ์ด๊ฒ์ด
์๋๋ฆฌ์ค๋ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์๊ฒ ์ ์ฉ๋ฉ๋๋ค.
๋ ๋ฒ์งธ๋ ์์ค ์ฝ๋๋ฅผ ๊ตฝ๋ ํ๋ก๋์
์ด๋ฏธ์ง์ ๊ดํ ๊ฒ์
๋๋ค.
(์ปดํ์ผ๋์ง ์์ ์คํฌ๋ฆฝํธ๋ก ์์
ํ๋ ๊ฒฝ์ฐ) ์ด๋ฏธ์ง์ (๋ฐ
๊ทธ๋ฐ ๋ค์ ๋ค์, ๋๋ ๊ทธ๋ ์ง ์์์ต๋๋ค, ๋๋ ์ฌ์ ํ ๊ทธ๊ฒ์ ๋ด ์์ ์ฅ์ฐฉํ๊ณ ์์์ต๋๋ค) ๋๋ ๋น์ ์
์์ฉ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๊ณ ์ต์ข
์ด๋ฏธ์ง์ ๋ณต์ฌํฉ๋๋ค. ๊ทธ ์์ ์์
์์ฉ ํ๋ก๊ทธ๋จ์ ๋งค์ฐ ์ด์์ฑ์ด ์์ต๋๋ค.
๋๋ ๋ชจ๋๊ฐ ๊ทธ๊ฒ์ ์ดํดํ๋ค๊ณ ์๊ฐํฉ๋๋ค! ๋ฌธ์ ๋ ๋์ปค ์์ฑ์ ์ํํ๋ ๊ฒ์
๋๋ค.
dev๋ ์๊ฐ์ ๋ค์ฌ ์ฌ๋ก๋ฅผ ์ฝ๊ณ ํ์ ์ฌํญ์ ์ดํด ํ์ต๋๊น? ์์ต๋๋ค
์ด๋ก ์ ์ฌ๊ธฐ์๋ ์ํฐ ํจํด์ด ์์ต๋๋ค. ํ์ํ๊ณ ์ํ๋ ๊ฐ๋ฐ์ ๋ง
์กด๊ฒฝ๋ฐ์ต๋๋ค.
์ฐ๋ฆฌ๋ docker, docker-compose ๋ฐ ๋ชจ๋ ์ํ๊ณ๋ฅผ ์ข์ํฉ๋๋ค.
๊ทธ๊ฒ์ ์ข์ํ๊ณ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋น์ ์ ์ง์
์ด ์์ต๋๋ค (์ ์ด๋ ๋น์ ์ค ์ผ๋ถ๋
๊ทธ๊ฒ์ ์ํด).
๋ด๊ฐ ์ง๋ ๋ช ๋
๋์ ๋ฐฐ์ด ๊ฒ์ ์ฌ๊ธฐ๋ก ๊ฐ์ ธ์ค๊ณ
๋ค์์ด ์์ผ๋ฉฐ์ด ์๋๋ฆฌ์ค์ ๋งค์ฐ ์ ์ ์ฉ๋ฉ๋๋ค.
์ค์ํ ๊ฒ์ ์ํํธ์จ์ด๊ฐํ๋ ์ผ์ด ์๋๋ผ ์ฌ์ฉ์๊ฐํ๋ ์ผ์ ๋๋ค.
์ค์ํ ๊ทธ๊ฒ์ผ๋ก
๊ฑด๋ฐฐ์ ํ๋ณตํ ์ฐ์์ฑ!
แง
2019 ๋ 6 ์ 6 ์ผ ๋ชฉ์์ผ 10:55์ jadon1979 [email protected]์ด ์์ฑํ์ต๋๋ค.
์์ฑ ํ์์ ๋ชฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋กํ๋ ๊ฒ์ ๋๋ค.
๋ก์ปฌ์์ ํ ์คํธ ํ ํ ๋ค์์ ์ฌ์ฉํ์ฌ ์ค์ผ์คํธ๋ ์ด์ ๋ ํ๊ฒฝ์ ๋ฐฐํฌํฉ๋๋ค.
๊ฑฐ์ ๋๋ ์ ํ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.๋ณต์กํ ์ฑ์์๋ ํ์ํ ๊ตฌ์ฑ ํ์ผ์ด ์๋นํ ๋ง์ ์ ์์ต๋๋ค.
์ฆ์ ์กฐ์ . ํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ธ (์๊ฐ ๋ฐ ๋น์ฉ ํ๋ช ํ) ๋ฐฉ๋ฒ
๊ทธ๋ ๊ฒํ๋ ๊ฒ์ ๋ณผ๋ฅจ ํค๋ฅผ ์ฑ์ฐ๋ ๊ฒ์ ๋๋ค (์ ์์ ์ธ ์ฌ๋์ด
์ฌ๋ฌ ๊ตฌ์ฑ์ ํ ์คํธํ๋ฉด์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๋ ค๋ฉด ..
๊ทธ๋ค์ ๊ฐ๋ฐ ์๊ฐ์ ๋์ ์ฐ๋ ๊ฒ์ ์ข์ํ๋ ์์ฌ๊ฐ ์์ต๋๋ค).Swarm ๋ฐ config๋ ์ค์ ๋ก ๋ช ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์ ์๋ตํ์ง ์์ต๋๋ค.
๋์ด๋ฉ๋๋ค. ์ด๋ฏธ ์์ฑํ์ฌ "๊ด์ฌ์ ๋ถ๋ฆฌ"๋ ์ ์ฉ๋์ง ์์
๋์ปค์์ ํ ์์๋ ์์ ์ ์ํํ์ง๋ง ๋จ์ํํฉ๋๋ค. ๋ํผ๋ ์๋๋๋ค
๋ถ๋ฆฌ ... ์ฐ๋ฆฌ๋ ๋น์ ์ด ๊ทธ๊ฒ์ ์กฐ๊ธ ๋ ํ์ฅํ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ์ ๋๋ค ...6643 https://github.com/docker/compose/issues/6643
๊ทธ๊ฒ์ผ๋ก ํดํค๋ฅผ ์ป์ผ์ญ์์ค .. ์๋์ ๋ชจ๋ ํ์ผ์ด ๋ณผ๋ฅจ ๊ธฐ๋ฅ์ ํ์ฅ
์ ํค๋ ๋จ์ผ ๋ณผ๋ฅจ์ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋๊ณ
๊ฐ๊ฐ์ ๋ด๋ถ ๊ฒฝ๋ก ...โ
๋๊ธ์ ๋ฌ์ ๊ธฐ ๋๋ฌธ์ ์์ ํ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/5523?email_source=notifications&email_token=ABBR3OMQH62242SM4QN5Y7TPZEQP7A5CNFSM4EKAVONKYY3PNVWWK3TUL52HS4DFVREXG43VMVBWPZGODW2995ZLOPWSZGODMVXHJKTissue ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ABBR3OMOZFZ47L6ITHPF2TDPZEQP7ANCNFSM4EKAVONA
.
ROOT.war
์ด ์๋ .war์์ ๋ด ์ฑ์ ์คํํ๊ธฐ ์ํด docker Tomcat ํ๊ฒฝ์ ๊ฐ๋ํ๊ณ ์ถ์ต๋๋ค. ์ด๋ ๊ฒํ๋ ค๋ฉด Tomcat์ webapps
๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํ๊ณ ํ์ฌ ๋ฐ์ธ๋ฉ ๋ ํฌํธ 8005/9์์ ์คํ๋๋๋ก ROOT๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํด์ผํฉ๋๋ค. '๋ถ๋ฒ ์ก์ธ์ค'์ ๋ํ ์ค๋ฅ๊ฐ์๋ ํฌํธ์ ๋ฆฌ ๋ฐ์ธ๋ฉ ๋ฌธ์ ๋ก ์ธํด ๋ค๋ฅธ ๋ชจ๋ ์์
์ด ์คํจํฉ๋๋ค. ์ด๋ค์ ์์ ํ
์คํธ ๋น๋์ด๋ฏ๋ก Dockerfile์ ๋ค์ด๊ฐ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ docker-compose
์์ ์ํ๋ ์ด์ ์
๋๋ค.
๋ฟก๋ฟก
๋๋ ๋ด๊ฐ ๋ชจ๋ ์ฌ๋์ ๋๋ณํ์ง๋ ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ตฌ์ฑ ์ง์์ด ์ฌ๊ธฐ์ ๋ํ ๋๋ถ๋ถ์ ๊ด์ฌ์ ์ถฉ์กฑ ์ํจ๋ค๋ ์ธ์์๋ฐ์ต๋๋ค. ์ด๊ฒ์ ๋ํ ์ด์๊ฐ ์ด๋ฆด๊น์?
์ด ๋ฌธ์ ์ ๋ํด ์์ง ๋ฌธ์ ๊ฐ์๋ ๊ฒฝ์ฐ ํ๋๋ฅผ ๋ง๋ค์ด ์ฌ๊ธฐ์ ์ฐ๊ฒฐํ์ญ์์ค. ๊ฐ์ธ ํ ์ถ์ ๊ธฐ์ ๋ญ๊ฐ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
... ๋๋ ์ด๊ฒ์ด docker-compose์์ ๊ตฌํ ๋ ์ ์๋ค๋ ๊ฒ์ ์ฝ๊ณ ์์ต๋๋ค (sans Swarm)
์ฐ๋ฆฌ๋ ์ด๋ฏธ ๊ธฐ์ด์ ์ธ ๋น๋ฐ ์ง์์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค.
ํ์คํ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ ์ผํ "๋ฐ ํจํด"์ dockerfile์ ์ง์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ง์ดํ ํ์ผ์ ์ปจํ ์ด๋์ ๋ฐ์ธ๋ฉํ๋ ๋ฑ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ํํ๊ธฐ ์ด๋ ต๋ค๋ ์ฌ์ค์ ํด๊ฒฐํด์ผํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ํ๋ ๊ฒ์ ํ ๋ฒ, ๊ฐ๊ธ์ ์ด๋ฉด ๊ณต์์ ์ผ๋ก ๋น๋๋๊ณ ์ฌ์ฉ ์์ , ์ฆ docker-compose์์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ๊ตฌ์ฑ ํ ์์๋ ์ปจํ ์ด๋์ ๋๋ค.
๋์ปค ์ฌ๋๋ค์ด ๊นจ๋ซ์ง ๋ชปํ๋ ํ "Dockerfile"์ด ์ ์ฒด ๋์ปค ๊ฐ๋ ์์ ๊ฐ์ฅ ํฐ ๋ฐ ํจํด์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ํนํ ๋ชจ๋ ๊ฒ์ด ์์ ํ ์ฝ์ ์์๊ณ ๊ด๋ฆฌ ํ ์ โโ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์ปค์ ๊ด๋ จ๋ ๋๊ตฐ๊ฐ๊ฐ "๋ฐ ํจํด"์ด๋ผ๋ ๋จ์ด๋ฅผ ๊ทธ๋ค์ด ์๋ ๊ฒ์ฒ๋ผ ๋ฒ๋ฆด ๋ ์ ๋ง ๋๋ฅผ ์๊ฒ ๋ง๋ญ๋๋ค!
Dockerfile์ ์ค์ ๋ก ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ค์ ๋ก ํจํค์ง ๊ด๋ฆฌ์ ๋๋ make์ ๊ฐ์ ๋น๋ ์ฉ์ผ๋ก ์ค๊ณ๋ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์์๋ ์ ์์ ์ธ ๋๋ฒ๊น ๋ฐ ์ ๋ฆฌ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋ ์์ ์ ์ํด ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋์ผํ DockerFile์ ์ฌ์ฉํฉ๋๋ค (ํจํด์ผ๋ก ๋ง๋ญ๋๋ค!). ๋ค๋ฅธ ์ฉ๋๋ก DockerFile์ ๋ณ๊ฒฝํ๊ณ ์ค์ ๋ก๋ ์ํฐ ํจํด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ "๊ตฌ์ฑ ์ง์"์ด ์ ํ ํ์ํ์ง ์์ ๊ณณ์ ๊ตฌ์กฐ๋ฅผ ๋ถ๊ณผํ์ง ์์ต๋๋ค.
๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ ๋ง์ดํธ๋ฅผ / etc / nginx๋ผ๊ณ ๋งํ๋๋ก ๋ฐ์ธ๋ํ๋ฉด ๊ตฌ์ฑ์ ์กฐ์ ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋๋ก rw ์ฌ์ผํ๋ค๋ ๊ฒ์ ๋๋ค (์ผ๋ช envsubst). ๊ทธ๋ฐ ๋ค์ ์ ๋ ฅ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํฉ๋๋ค (๋ถ๋ณ ์ํ๋ก ์ ์งํด์ผ ํจ) ... ์ปจํ ์ด๋๊ฐ ๊ตฌ์ฑ ์ ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๋ฐ ํจํด์ ์ป์ง ๋ชปํ๋ฏ๋ก ๋ค์ ์์ฑ ํ ๋ ํ์ผ์ ์ปจํ ์ด๋์ ๋ณต์ฌํ๋ ์ต์ ์ด ํ์ํฉ๋๋ค. ํด๊ฒฐ์ฑ .
์ฆ, ์ปจํ ์ด๋์์๋ ๋ฐ์ธ๋ ๋ง์ดํธ ๋๋ ํ ๋ฆฌ rw์ด์ง๋ง ํธ์คํธ์์๋ ro์ ๋๋ค. ์ด๊ฑธ ํ์ฉํ๋ฉด ์ ๋ง ๋น์ ์ ์ฃฝ์ผ๊น์?
ํ์คํ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ ์ผํ "๋ฐ ํจํด"์ dockerfile์ ์ง์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ง์ดํ ํ์ผ์ ์ปจํ ์ด๋์ ๋ฐ์ธ๋ฉํ๋ ๋ฑ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ํํ๊ธฐ ์ด๋ ต๋ค๋ ์ฌ์ค์ ํด๊ฒฐํด์ผํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ํ๋ ๊ฒ์ ํ ๋ฒ, ๊ฐ๊ธ์ ์ด๋ฉด ๊ณต์์ ์ผ๋ก ๋น๋๋๊ณ ์ฌ์ฉ ์์ , ์ฆ docker-compose์์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ๊ตฌ์ฑ ํ ์์๋ ์ปจํ ์ด๋์ ๋๋ค.
๋์ปค ์ฌ๋๋ค์ด ๊นจ๋ซ์ง ๋ชปํ๋ ํ "Dockerfile"์ด ์ ์ฒด ๋์ปค ๊ฐ๋ ์์ ๊ฐ์ฅ ํฐ ๋ฐ ํจํด์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ํนํ ๋ชจ๋ ๊ฒ์ด ์์ ํ ์ฝ์ ์์๊ณ ๊ด๋ฆฌ ํ ์ โโ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์ปค์ ๊ด๋ จ๋ ๋๊ตฐ๊ฐ๊ฐ "๋ฐ ํจํด"์ด๋ผ๋ ๋จ์ด๋ฅผ ๊ทธ๋ค์ด ์๋ ๊ฒ์ฒ๋ผ ๋ฒ๋ฆด ๋ ์ ๋ง ๋๋ฅผ ์๊ฒ ๋ง๋ญ๋๋ค!
Dockerfile์ ์ค์ ๋ก ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ค์ ๋ก ํจํค์ง ๊ด๋ฆฌ์ ๋๋ make์ ๊ฐ์ ๋น๋ ์ฉ์ผ๋ก ์ค๊ณ๋ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์์๋ ์ ์์ ์ธ ๋๋ฒ๊น ๋ฐ ์ ๋ฆฌ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋ ์์ ์ ์ํด ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋์ผํ DockerFile์ ์ฌ์ฉํฉ๋๋ค (ํจํด์ผ๋ก ๋ง๋ญ๋๋ค!). ๋ค๋ฅธ ์ฉ๋๋ก DockerFile์ ๋ณ๊ฒฝํ๊ณ ์ค์ ๋ก๋ ์ํฐ ํจํด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ "๊ตฌ์ฑ ์ง์"์ด ์ ํ ํ์ํ์ง ์์ ๊ณณ์ ๊ตฌ์กฐ๋ฅผ ๋ถ๊ณผํ์ง ์์ต๋๋ค.
๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ ๋ง์ดํธ๋ฅผ / etc / nginx๋ผ๊ณ ๋งํ๋๋ก ๋ฐ์ธ๋ํ๋ฉด ๊ตฌ์ฑ์ ์กฐ์ ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋๋ก rw ์ฌ์ผํ๋ค๋ ๊ฒ์ ๋๋ค (์ผ๋ช envsubst). ๊ทธ๋ฐ ๋ค์ ์ ๋ ฅ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํฉ๋๋ค (๋ถ๋ณ ์ํ๋ก ์ ์งํด์ผ ํจ) ... ์ปจํ ์ด๋๊ฐ ๊ตฌ์ฑ ์ ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๋ฐ ํจํด์ ์ป์ง ๋ชปํ๋ฏ๋ก ๋ค์ ์์ฑ ํ ๋ ํ์ผ์ ์ปจํ ์ด๋์ ๋ณต์ฌํ๋ ์ต์ ์ด ํ์ํฉ๋๋ค. ํด๊ฒฐ์ฑ .
์ฆ, ์ปจํ ์ด๋์์๋ ๋ฐ์ธ๋ ๋ง์ดํธ ๋๋ ํ ๋ฆฌ rw์ด์ง๋ง ํธ์คํธ์์๋ ro์ ๋๋ค. ์ด๊ฑธ ํ์ฉํ๋ฉด ์ ๋ง ๋น์ ์ ์ฃฝ์ผ๊น์?
์ด ๊ฐ์:
```
svc :
๋ถ:
- './source/filename:/path/ filename : ro : www-data'
- './source/dir:/path/ dir : ro : www-data'
# ๋๋
svc :
๋ถ:
-์ถ์ฒ : './source/file'
๋ชฉ์ ์ง : '/ destination'
ํ๊ฐ : ro
์์ ์ : ์์ ์
๊ทธ๋ฃน : ๊ทธ๋ฃน
-์ถ์ฒ : './source/directory'
๋ชฉ์ ์ง : '/ destination'
ํ๊ฐ : ro
์์ ์ : ์์ ์
๊ทธ๋ฃน : ๊ทธ๋ฃน ''`
์ฌ์ฉ ์ฌ๋ก : ์ ํ๋ฆฌ์ผ์ด์ ์ docker-compose ํ์ผ์ด ํฌํจ ๋ ์กฐ์ ๋์ง ์์ ์ปจํ ์ด๋ ์๋ฃจ์ ์ด ์์ต๋๋ค. Git-repository ๋ด๋ถ์ SSL ์ธ์ฆ์ ๋ฑ์ VM์ผ๋ก ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋น์ค๋ฅผ ๊ฐ๋ํ๊ณ ์๋ฅผ ๋ค์ด SSL ์ธ์ฆ์, ๊ตฌ์ฑ ํ์ผ ๋ฑ์ ์ปจํ ์ด๋์ ๋ณผ๋ฅจ์ผ๋ก ์ด๋ํ๋ ค๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ํ์ฌ COPY ๋ช ๋ น์ด์๋ Dockerfile์ด ์์ผ๋ฉด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ณต์ ๋ git repo ๋ด๋ถ์ ํ์ผ์ ์๋ง์ผ๋ก ๋ง๋ค๊ณ ์ถ์ง ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ผ์ ๋ณ๊ฒฝํ๋ฉด ๋งค๋ฒ ์ ์ฅ์๋ฅผ ์ ๋ฆฌํด์ผํฉ๋๋ค.
@MartinMajewski ๊ทธ๋ฐ ๋ค์ ์ธ์ฆ์๊ฐ์๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ณผ๋ฅจ์ผ๋ก ๋ง์ดํธ ํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ์์ ์ง์ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก (๋ฐ ๋ฐฉ๋ฒ์ ๋ํ ์ง๋ฌธ) :
postgres
์ด๋ฏธ์ง์ ์์์ ๋จ์ผ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค : POSTGRES_PASSWORD
. Docker Secret์ ํตํด ์ค์ ํ๊ณ ์ถ์ต๋๋ค. ๋ด๊ฐํด์ผ ํ ์ผ์ ์ฒจ๋ถ ๋ Secret์ ์คํ์ค์ธ ์ปจํ
์ด๋์ env var๋ก ๋ด๋ณด๋ด๋ ๋ด ์์ ์ entrypoint.sh
๋ฅผ ๋ฃ๋ ๊ฒ์
๋๋ค. ์ด ์ง์
์ ์ ์์์ ์ปจํ
์ด๋์ ์ถ๊ฐํด์ผํฉ๋๋ค. 2 ์ค Dockerbuild ์์ด๋ ํ ์ ์์ต๋๋ค. ํ๋์ ๋จ์ผ ํ์ผ์ ๋ณต์ฌ ํ ์ ์์ต๋๋ค.
PS postgres
๊ฐ ๊ทธ ์์
๋๋ค. _FILE
env vars๋ฅผ ์ง์ํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ด๋ถ ์ถ์ ๋ฌธ์ https://docker.atlassian.net/browse/COMPOSE-89
์ฌ์ฉ ์ฌ๋ก : Karaf
ํ๋ก์ ํธ๋ฅผ ๋น๋ ํ ๋๋ง๋ค ๋ค์ ๋น๋ํ๊ณ ์ถ์ง ์์ karaf ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ๊ณ ๋ชจ๋ ๋น๋์ ๋ํด ์ปจํ
์ด๋๋ฅผ ๋ค์ ๋น๋ ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ปจํ
์ด๋๋ฅผ ์์ํ ๋ _features.xml_ ๋ฐ _jar_์ deploy ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํด์ผํฉ๋๋ค.
์ง๊ธ๊น์ง ๋ด ์๋ฃจ์ ์ karaf ์ด๋ฏธ์ง๋ฅผ ๋ ๋ค๋ฅธ Dockerfile (overlayfs์ ์์กดํ์ฌ ๊ฒฐ๊ตญ ์ค๋ฒ๋ ์ด๊ฐ ๋ถ์กฑํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ์ญ์ ํด์ผ ํจ) ๋ฐ avast / gradle-docker-compose-plugin์์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์์ต๋๋ค. init ๋ช ๋ น์ ๋ฐ๋์ ํ๊ฒฝ ๋ณ์๋ก ์ ๋ฌํ ์ ์์ง๋ง features.xml์ ๋ด์ฉ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋์ ํน์ ์์น์ ํ์ผ๋ก ์ ์ฅํด์ผํฉ๋๋ค. ์ง๊ธ์ ๋ณผ๋ฅจ ๋ฐ์ธ๋ ๋ง์ดํธ ๋ง ์ฌ์ฉํ๋ฉด๋ฉ๋๋ค. ์๊ฒฉ ์์คํ ์ ํด๋น ๋ณผ๋ฅจ์ ํญ๋ชฉ์ ๊ฐ์ ธ ์ค๋ ค๋ฉด ์ด๋ป๊ฒํฉ๋๊น? ๋ด ๋น๋ ์คํฌ๋ฆฝํธ์ ๋ ๋ง์ ๋ก์ง์ด ํ์ํฉ๋๋ค (์ : org.hidetake.groovy.ssh, ๋น๋ฐ ์ํธ / ํค ๋ก์ง์ผ๋ก ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์กํ๊ฒ ํจ). docker-compose cp๋ฅผ ์ฌ์ฉํ ์์๋ ๊ฒฝ์ฐ ํ์ํ ๋ณต์ฌ ๋ช ๋ น์ docker-compose.yml์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. avast / gradle-docker-compose-plugin์ ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ณ ์ถ๊ฐ ์๊ฒฉ ํ์ผ ์์คํ ์ก์ธ์ค ๋ ผ๋ฆฌ์์ด ๋ด ๋น๋ ์ถ๋ ฅ์ ํ์ผ์ ์ปจํ ์ด๋๋ก ์ง์ ๋ณต์ฌํ๋ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ด Dockerfile์ ์คํฌ๋ฆฝํธ์ docker-compose.yml ๋น๋ ๋ถ๋ถ์ ์ถ๊ฐ๋ฉ๋๋ค. ๋ฌด์์ด๋ ๊ฐ์ ์ด๊ฒ์ ๋ฐ ํจํด์ ๋๋ค. ์๋ํ๋ฉด ๊ฐ ๋น๋์ ํจ๊ป ์ ์คํธ๋ฆผ ๋์ปค ์ด๋ฏธ์ง์ ์ค๋ฒ๋ ์ด๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค (์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ์ญ์ ํด์ผ ํ ๋๊น์ง ๋น๋ ์๋๊ฐ ํจ์ฌ ๋๋ ค์ง ๋๊น์ง).
FROM myregistry:443/docker/image/karaf-el7:latest
COPY karafinitcommands /usr/local/karaf/etc/
COPY features.xml \
*.jar \
/usr/local/karaf/deploy/
docker cp๊ฐ ๋ฐํ์ ๋ณต์ฌ์ ์ ์๋ํ์ง๋ง docker-compose์๋ ๋๋ฑํ ๋ฉ์ปค๋์ฆ์ด ์๋ค๋ ๊ฒ์ด ์ค๋ง ์ค๋ฝ์ต๋๋ค.
์์ด๋์ด๋ ๋ก์ปฌ ๋๋ ํ ๋ฆฌ๋ฅผ / usr / local / karaf / deploy์ ๋ง์ดํธํ๊ณ ๊ฑฐ๊ธฐ์ ํ์ผ์ ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋๋ ์ด๊ฒ์ ์ ์งํ๊ธฐ ์ํด ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ๊ฑฐ๋ ๋์ปค ํ์ผ์ ์ฌ์ฉํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์์ต๋๋ค.
์์ด๋์ด๋ ๋ก์ปฌ ๋๋ ํ ๋ฆฌ๋ฅผ / usr / local / karaf / deploy์ ๋ง์ดํธํ๊ณ ๊ฑฐ๊ธฐ์ ํ์ผ์ ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋๋ ์ด๊ฒ์ ์ ์งํ๊ธฐ ์ํด ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ๊ฑฐ๋ ๋์ปค ํ์ผ์ ์ฌ์ฉํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์์ต๋๋ค.
ํ์คํ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ๋ค์ ์ฝ๊ณ ์ด๊ฒ์ด ์์ ํ ํธ๋ฆฌํ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์ฃผ๋ชฉํ์ญ์์ค. ์ปจํ ์ด๋๋ gradle ๋น๋๋ก ๋ค์ ๋น๋๋ฉ๋๋ค. ๋ค์ ๋ ผ๋ฆฌ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ๋น๋ ํ์ผ์ / usr / local / karaf / deploy์ ๋ง์ดํธ ๋ "๋ก์ปฌ ๋๋ ํ ๋ฆฌ"๋ก ์ด๋ป๊ฒ ์ด๋ํฉ๋๊น? ์ ๊ฒฝ์ฐ์๋ "๋ก์ปฌ ๋๋ ํ ๋ฆฌ"๊ฐ ๋ ์ ํํ๊ฒ๋ ํธ์คํธ๊ฐ ์๊ฒฉ ํธ์คํธ ์ธ "ํธ์คํธ ๋๋ ํ ๋ฆฌ"์ ๋๋ค. ๋ฐ๋ผ์ ํ์ผ์ ๊ฐ์ ธ์ค๊ณ ์ด์ ํ์ผ์ ๊ต์ฒดํ๊ณ ์ถ๊ฐ ํ์ผ์ ์ ๊ฑฐํ๊ธฐ ์ํด rsync ๋๋ ๋ค๋ฅธ ๊ฒ์ ๋น๋ ์คํฌ๋ฆฝํธ์ ์ถ๊ฐํด์ผํฉ๋๋ค. docker-compose cp๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ๋ถํ์ํฉ๋๋ค. ๊ธฐ์กด์ ๋์ปค ํด๋ผ์ด์ธํธ๋ฅผ ํฌํธ ํฌ์๋ฉ์ ํตํด ์ค์ ํ ๋์ปค ๋ฐ๋ชฌ ์ฐ๊ฒฐ์ ํ์ฉํ ์ ์์ต๋๋ค.
Docker ๋ณผ๋ฅจ์ ๊ฐ ๋น๋์์ ์ ๊ฑฐ ํ ์ ์์ต๋๋ค. ๋ง์ดํธ ๋ณผ๋ฅจ์ ๋ฐ์ธ๋ ํ ์ ์์ต๋๋ค. ๋น์ด์๋ ๊ฒฝ์ฐ์๋ง ๋ค์ ์ฑ์
๋ค์ ๋งํ์ง๋ง, docker cp๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์ ํ๊ฒฝ์ผ๋ก ๋ณต์ฌ ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ค๋ง์ค๋ฌ์ด ๋ถ๋ถ์ ๋๋ค.
์, ๋๋ ๋ด ์ค์ ์ ์ต์ํด ์ ธ. http://github.com/keithy/groan์ ์ฌ์ฉํ์ฌ ๋นํธ์ ์กฐ๊ฐ์ ์๊ฒฉ ์๋ฒ์ ์์ฒด ๋ฐฐํฌํ๋ bash ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ๋ค์ docker๋ฅผ ํธ์ถํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก : Google ํด๋ผ์ฐ๋ ๋น๋ ๋ฐ ๋น๋ ์ํฐํฉํธ
์ํฐํฉํธ ํ์ : ์น ํด๋ผ์ด์ธํธ (์๋ ์์ฑ)๋ graphql ๋ฐ์ธ๋ฉ์ ๋ฐ์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ปดํ์ผ์ ํ์ํ ํ์ผ์ ์์ฑํ๋ ค๋ฉด ์๋ฒ๋ฅผ ์คํํด์ผํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ด๋ฏธ์ง์๋ ์๋ฒ ์ฃผ์๊ฐ ์ฃผ์ด์ง๋ฉด ๋ฐ์ธ๋ฉ์ ๋ง๋๋ ๋๊ตฌ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐฐ๊ฒฝ์์ ์๋ฒ ์ด๋ฏธ์ง๋ฅผ ์์ํ๊ณ ์ด์ ์๋ฒ๋ฅผ ๊ฐ๋ฆฌํค๋ ํด๋ผ์ด์ธํธ ์ปจํ
์ด๋๋ฅผ ์คํํด์ผํฉ๋๋ค. ์ด์ ์์ฑ ๋ ํ์ผ์ ์ปจํ
์ด๋์์ "์์
๊ณต๊ฐ"ํธ์คํธ ๋๋ ํ ๋ฆฌ๋ก ๊ฐ์ ธ ์ค๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? Docker ์ปจํ
์ด๋์ ๋ง์ดํธ ๋ ๋๋ ํ ๋ฆฌ์ ์ด๋ฏธ ์์ผ๋ฏ๋ก ๋ง์ดํธ ๋๋ ํ ๋ฆฌ๊ฐ ํ์ฉ๋์ง ์์ต๋๋ค. docker-compose cp
์ (๋ฅผ) ํ ์ ์์ผ๋ฉด ์ปจํ
์ด๋ ID๋ฅผ ๊ฐ์ ธ ์ค๋ ์ถ๊ฐ ๊ณ ํต์ค๋ฌ์ด ๋จ๊ณ๋ฅผ ์ํ ํ ์ ์์ต๋๋ค.
$(docker-compose ps -q SERVICE)
์ ์์กดํ์ฌ ์ฌ๋ฐ๋ฅธ ์ปจํ
์ด๋๋ฅผ ๋์์ผ๋กํ๋ฉด ์ด๋ฌํ ์ปจํ
์ด๋ ์ค์ฌ ์์
์ ์ผ๋ฐ Docker CLI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ก์ด ๋ช
๋ น์ ๋์
ํ๋ฉด ๋ช
๋ น์ ์์ฒญํ๋ ์์์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ ๊ฐ๋จ ํด์ง์ง ๋ง ํ์๋ ์๋๋๋ค. compose์ docker CLI ์ฌ์ด์ ๋ ๋ง์ ์ฝ๋ ์ค๋ณต์ ๋ฐฉ์งํ๋ ค๋ฉด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Docker ๋ฐ๋ชฌ compose๊ฐ ์ฌ์ฉ์ค์ธ ๋ฒ์ ์ผ๋ก ์ธํด compose์ ์ผ๋ฐ docker ๊ฐ์ ๋น๋ ์บ์๊ฐ ๋ค๋ฅธ ๊ณต๊ฐ ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฆ, CI ํ๊ฒฝ์์ ์บ์๋ฅผ ์ค๋จํ์ง ์์ผ๋ ค๋ฉด pure compose๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค (https : // github .com / docker / compose / issues / 883) ๋ฐ๋ผ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋ ๋๊น์ง ์ผ๋ฐ docker ๋ช
๋ น๊ณผ compose ๋ช
๋ น์ ํผํฉํ๋ฉด ์บ์๊ฐ ์์๋ฉ๋๋ค. compose config๋ ๋ชจ๋ ์ข
๋ฅ์ ๊ตฌ์์ง config๋ฅผ ์ง์ ํ๋ฏ๋ก ์ผ๋ฐ docker
๋ช
๋ น์ผ๋ก ์ค๋ณต ๊ตฌ์ฑ์ ์๋์ผ๋ก ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
$(docker-compose ps -q SERVICE)
์ ์์กดํ์ฌ ์ฌ๋ฐ๋ฅธ ์ปจํ ์ด๋๋ฅผ ๋์์ผ๋กํ๋ฉด ์ด๋ฌํ ์ปจํ ์ด๋ ์ค์ฌ ์์ ์ ์ผ๋ฐ Docker CLI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ก์ด ๋ช ๋ น์ ๋์ ํ๋ฉด ๋ช ๋ น์ ์์ฒญํ๋ ์์์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ ๊ฐ๋จ ํด์ง์ง ๋ง ํ์๋ ์๋๋๋ค. compose์ docker CLI ์ฌ์ด์ ๋ ๋ง์ ์ฝ๋ ์ค๋ณต์ ๋ฐฉ์งํ๋ ค๋ฉด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฌํ ์๋๋ฆฌ์ค๋ ๋งค์ฐ ์ผ๋ฐ์ ์ด๊ณ ์์ , ์ด๋ฏธ์ง ๋น๋, ๋ค์ ์์ , ์ด๋ฏธ์ง ๋น๋ ๋ฑ์ด docker-compose๋ฅผ ํตํด ์ด๋ฌํ ์์ ์ ์ฒ๋ฆฌ ํ ์์๋ ์๊ฐ ์ฑํฌ ๊ตฌ์ ์ด๊ธฐ ๋๋ฌธ์ "์ธ๊ธ ๋ ์ฌ์ฉ ์ฌ๋ก"๋ณด๋ค ํจ์ฌ ๋ ๊น์ต๋๋ค. "๋น์ ์ docker cli์์ ํ ์ ์์ผ๋ฏ๋ก ๊ฑฐ๊ธฐ์์ ํ ์ ์์ต๋๋ค"๋ผ๋ ์ฃผ์ฅ์ docker-compose์ ์ถ๊ฐ ๋ ์๋ง์ ๋ค๋ฅธ ๊ฒ๋ค์ ๊ฑฐ์ ๋ฌดํจํํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๊ฑฐ์ 1 ๋ ๋์ ๊ณต๊ฐ๋์์ผ๋ฉฐ์ด ๋ฌธ์ ์ธ์ ๋ค๋ฅธ ๋ง์ ๋ ผ์๊ฐ ์์ต๋๋ค. ์ค์ ๋ก ํด๊ฒฐ๋์ง ์๋ ํ ๋ซํ๋ฉด ์๋ฉ๋๋ค.
@dionjwa # 883์ docker-compose๊ฐ docker CLI์ ์ ๋ ฌ๋์ด์ผํ๋ฏ๋ก (์ฌ์ ํ ๊ด๋ จ์ด์๋ ๊ฒฝ์ฐ) ์ค์ ๋ก ์กฐ์ฌํด์ผํฉ๋๋ค.
@ jadon1979 ์ด ๊ธฐ๋ฅ ์์ฒญ์ ์ฐจ๋จํ๋ ค๋ ๊ฒ์ด ์๋๋๋ค. 1 ๋
์ด์ ์ ์ ์ด๋ ธ์ผ๋ฉฐ ํต์ฌ ๊ด๋ฆฌ์ ์ค ๋๊ตฌ๋ ์ ๋ช
๋ น์ ๋์
ํ ๋งํผ ์ค์ํ๋ค๊ณ ์๊ฐํ์ง ์์์ผ๋ฉฐ ๊ธฐ์ฌ์๋ PR์ ์ ์ํ์ง ์์์ต๋๋ค. ๊ทธ๊ฒ.
์ด ๊ธฐ๋ฅ ์์ฒญ์ ๋ํ ํผ๋๋ฐฑ๊ณผ "๋ ๋์ ๋ฐฉ๋ฒ"์ ์ ๊ณตํ๊ธฐ์ํ ๊ฐ๋ฐ ๋
ธ๋ ฅ์ ๋ถ์กฑ์ ๋ฐ๋ผ ์ฝ๊ฒ ๋ณ์นญ์ ์ง์ ํ ์์๋ docker-compose ๋ฐ docker cli์ ์กฐํฉ์ ์ฌ์ฉํ๋ ์ ์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค. ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ์ ์งํ๋ ํ๊ฒฝ์ ํฉ๋ฆฌ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๋ค.
์ด์ ๋๊ตฐ๊ฐ๊ฐ PR์ ์ด์ด ์๋ก์ด cp
๋ช
๋ น์ ์ ๊ณตํ๋ฉด ๊ธฐ๊บผ์ด ๊ฒํ ํ๊ฒ ์ต๋๋ค.
๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ
์ํฐ ํจํด. ๊ทธ๋ฆฌ๊ณ ๋ฉฐ์น ๋ง๋ค ์๋ก์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ๊ฒ์๋์ง๋ง
์ํฐ ํจํด.
2019 ๋
11 ์ 18 ์ผ ์์์ผ ์คํ 5:31 Nicolas De loof [email protected]
์ผ๋ค :
@dionjwa https://github.com/dionjwa # 883
https://github.com/docker/compose/issues/883 ์ ๋ง ํ์ํฉ๋๋ค
docker-compose๊ฐ ์ ๋ ฌ๋์ด์ผํ๋ฏ๋ก (์ฌ์ ํ ๊ด๋ จ์ด์๋ ๊ฒฝ์ฐ) ์กฐ์ฌ
๋์ปค CLI.@ jadon1979 https://github.com/jadon1979 ๋๋ ์ด๊ฒ์ ์ฐจ๋จํ๋ ค๊ณ ํ์ง ์์ต๋๋ค
๊ธฐ๋ฅ ์์ฒญ, ๋ฐฉ๊ธ ์ด๋ ธ๋ ์ง 1 ๋ ์ด ๋์๊ณ
ํต์ฌ ์ ์ง ๊ด๋ฆฌ์ ์ค ๋๊ตฌ๋
์๋ก์ด ๋ช ๋ น์ ๋์ ํ์ง๋ง, ๊ธฐ์ฌ์๋ PR์ ์ ์ํ์ง๋ ์์์ต๋๋ค.
์ด ๊ธฐ๋ฅ ์์ฒญ์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ๋ฅด๋ฉด
๊ทธ๋ฆฌ๊ณ "๋ ๋์ ๋ฐฉ๋ฒ"์ ์ ๊ณตํ๊ธฐ์ํ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ๋ถ์กฑ, ์ ์ ๋
docker-compose ๋ฐ docker cli์ ์กฐํฉ์ ์ฌ์ฉํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ์ ์งํ๊ธฐ ์ํด ํ๊ฒฝ์์ ์ฝ๊ฒ ๋ณ์นญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํฉ๋ฆฌ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ.
์ด์ ๋๊ตฐ๊ฐ๊ฐ ์๋ก์ด cp ๋ช ๋ น์ ์ ๊ณตํ๊ธฐ ์ํด PR์ ์ด๋ฉด ๊ธฐ๊บผ์ด
๊ทธ๊ฒ์ ๊ฒํ ํ์ญ์์ค.โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/5523?email_source=notifications&email_token=AAGRIF2NS64IYANNVTGFTULQUL3TZA5CNFSM4EKAVONKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5W2ZLO
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAGRIFY7CULCUS3TDDTTHZLQUL3TZANCNFSM4EKAVONA
.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ์ปจํ ์ด๋๋ก ๋ณต์ฌํ๋ ๊ฒ์ด ์๋๋ผ ์คํ ํ ์ปจํ ์ด๋์์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค. ์ด ์์ ์ ํ๋ฆผ์์ด ์ ํ ๋ ๊ธฐ๋ฅ์ ์์ฑํ๋ ํฌ๋ฐํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉ ํ์ฌ CLI์์ ์ํ ํ ์ ์์ต๋๋ค. ์๋์ ์์ธํ ๋ด์ฉ์ด ์์ต๋๋ค.
์ ๋ DevOps ์์ง๋์ด์ด๋ฉฐ ๋ฒ ์ด ๋ฉํ ๋น๋ ์์ด์ ํธ์ ์ข
์์ฑ ์ง์ฅ์ ๋์์ผ๋ก ์ปจํ
์ด๋์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๋ด CI ์์คํ
์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ
์คํธ ํ ๋ ๋์ผํ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ Dockerfile์์ ๋น๋ํ๊ณ ๋ชจ๋ ๊ฒ์ฌ ( bundle exec rspec
, npm test
๋ฑ)๋ฅผ _ ์ปจํ
์ด๋ ๋ด๋ถ์์ ์คํํฉ๋๋ค _. ๋ฌธ์ ๋๋ ํ
์คํธ ๊ฒฐ๊ณผ์ ๊ฐ์ด ์์ฑ ๋ ๋น๋ ์ํฐํฉํธ๊ฐ์๋ ๊ฒฝ์ฐ docker cp
๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋์์ ๋ณต์ฌํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
ํตํฉ ํ
์คํธ์ ๊ฒฝ์ฐ docker-compose
๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผ ์คํํ๋ ์ปจํ
์ด๋์ ์๋น์ค ์ข
์์ฑ (์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ)์ ์ ๊ณตํ๊ธฐ ์์ํ์ต๋๋ค. ์ํ๊น๊ฒ๋ "docker CLI ํด๊ฒฐ ๋ฐฉ๋ฒ"์์ด ๊ฒฝ์ฐ ํ์ผ์ ๋ณต์ฌํ๋ ๋ฐ ์ ์ฉํ์ง ์์ต๋๋ค.
์ด ๊ตฌ์ฑ ๊ณ ๋ ค : docker-compose-minimal.yml
version: "3"
services:
artifact-generator:
image: busybox
์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ , ํด๋น ์ปจํ
์ด๋์์ ๋ช
๋ น์ ์คํํ๊ณ , ์ปจํ
์ด๋ ID๋ฅผ ์ป์ ๋ค์ docker cp
์ฌ์ฉํ์ฌ ํ์ผ์ ์ถ์ถํด ๋ณด๊ฒ ์ต๋๋ค.
$ # Prepare the images and (stopped) containers. In this case there is only one.
$ docker-compose --file docker-compose-minimal.yml up --no-start
Creating network "docker-compose-cp-test_default" with the default driver
Creating docker-compose-cp-test_artifact-generator_1 ... done
$ # Determine the ID of the container we will want to extract the file from
$ docker-compose --file docker-compose-minimal.yml ps -q artifact-generator
050753da4b0a4007d2bd3514a3b56a08235921880a2274dd6fa0ee1ed315ff88
$ # Generate the artifact in the container
$ docker-compose --file docker-compose-minimal.yml run artifact-generator touch hello.txt
$ # Check that container ID again, just to be sure
$ docker-compose --file docker-compose-minimal.yml ps -q artifact-generator
050753da4b0a4007d2bd3514a3b56a08235921880a2274dd6fa0ee1ed315ff88
$ # OK, that looks like the only answer we're going to get. Can we use that to copy files?
$ docker cp $(docker-compose --file docker-compose-minimal.yml ps -q artifact-generator):hello.txt ./hello-artifact.txt
Error: No such container:path: 050753da4b0a4007d2bd3514a3b56a08235921880a2274dd6fa0ee1ed315ff88:hello.txt
$ # Nope. Let's take a look at why this is
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e2cb5d38ba0 busybox "touch hello.txt" About a minute ago Exited (0) About a minute ago docker-compose-cp-test_artifact-generator_run_dd548ee686eb
050753da4b0a busybox "sh" 2 minutes ago Created docker-compose-cp-test_artifact-generator_1
๋ณด์๋ค์ํผ docker-compose ps
์ค์ ๋ก ์
๋ฐ์ดํธ ๋ ์ปจํ
์ด๋ ID๋ฅผ ์์ง ๋ชปํฉ๋๋ค. ์ด๊ฒ์ ๋ถํํ ์ผ์
๋๋ค. run_dd548ee686eb
์ด ๋ด๊ฐ ์คํ ํ docker-compose run
์ ์ด๋ป๊ฒ ๋ ๊ด๋ จ์ด ์๋ค๋ ๊ฒ์ ์ ์์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๊ทธ๋ ๊ฒ ๋์์ง ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ฌ์ฑ ํ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์๋ --name
๋ฅผ ์คํ ๋ช
๋ น์ ์ถ๊ฐํ๋ ๊ฐ๋จํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
$ docker-compose --file docker-compose-minimal.yml run --name blarg artifact-generator touch hello.txt
$ docker cp blarg:hello.txt ./hello-artifact.txt
$ ls
docker-compose-minimal.yml hello-artifact.txt
์ฑ๊ณต! ... ์ข
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์ฌ๋ฌ ๋น๋๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ๋ ๊ฒฝ์ฐ --name
์ ์ญ ์ ์ผ๋ก ๊ณ ์ ํ๊ฒ ๋ง๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ต์์ ๊ฒฝ์ฐ์๋ ์๋๋ฌ์ด ์ถฉ๋์ด ๋ฐ์ํ๊ณ ์ต์
์ ๊ฒฝ์ฐ ์์๋ ๊ฒฐ๊ณผ (์ค๋ฅ๋ ์์ง๋ง ์๋ชป๋ ํ์ผ์ด ์ถ์ถ ๋จ)๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ Docker๊ฐ ์ด๋ฏธ ๋ง๋ ๊ฒ์ ์ฌ์ฉํ๋ ๋์ ์ปจํ
์ด๋ ID ์์ฑ์ ๋ค์ ๋ง๋ค์ด์ผํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ํฌ๋ฐํฉ๋๋ค.
์ต์ํ docker-compose run
๋ช
๋ น์ ๊ฒฐ๊ณผ ์ธ ์ปจํ
์ด๋์ ID๋ฅผ ์ ์์๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
๋ฟก๋ฟก
$ (docker-compose ps -q SERVICE)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๋ฅธ ์ปจํ ์ด๋๋ฅผ ๋์์ผ๋กํ๋ฉด ์ด๋ฌํ ์ปจํ ์ด๋ ์ค์ฌ ์์ ์ ์ผ๋ฐ docker cli๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
False, ์ด์ ์ฃผ์์ ๋ฐ๋ชจ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์์ ์๋
๊ฐ ์๋ก์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ์ง ๊ฒ์
๋๋ค. ์ ๊น๋ง ์๋ก์ด ์ํฐ
ํจํด ...
2019 ๋ 12 ์ 13 ์ผ ๊ธ์์ผ 11:40 Ian, [email protected] ์์ฑ :
@ndeloof https://github.com/ndeloof
$ (docker-compose ps -q SERVICE)์ ์์กดํ์ฌ ์ฌ๋ฐ๋ฅธ ์ปจํ ์ด๋๋ฅผ ๋์์ผ๋ก ์ง์
์ปจํ ์ด๋ ์ค์ฌ์ ์ผ๋ฐ ๋์ปค CLI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ .False, ์ด์ ์ฃผ์์ ๋ฐ๋ชจ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/5523?email_source=notifications&email_token=AAGRIF2NFPTKY3QKRIXQ5RTQYONHLA5CNFSM4EKAVONKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNEGMVXHJKJKTDN5WW2ZLO026 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAGRIF3S4UHF5NG3VKYXJB3QYONHLANCNFSM4EKAVONA
.
๊ด๋ฆฌ์์๊ฒ ์ฐ๋ฝํ๊ธฐ ์ํด ๋๊ตฌ๋ฅผ ์ธ๊ธ ํ ์ ์์ต๋๊น? ์ด ๋ฌธ์ ๋ ๊ทธ๋ค์ด ์ฐ๋ฆฌ์ ๋ํ๋ฅผ ์์ํ ๋๊น์ง ์๋ฏธ๊ฐ ์์ต๋๋ค. "ํ์ฌ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ก ์ธํด ์ํ ํ ์์๋ ์์ "์ผ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฌํ ๋ฌธ์ ๋ฅผ ๋นํ์ฑ ์ํ๋ก ๋๋ ๊ฒ์ Docker์ ๊ฐ์ ์ธ๊ธฐ์๋ ์๋ฃจ์ ์์๋ณด๊ณ ์ถ์ ๊ฒ์ด ์๋๋๋ค.
๋ฐฐํฌ๋ bazel์ ์ฌ์ฉํ์ฌ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ Docker ๋ ์ง์คํธ๋ฆฌ์ ์
๋ก๋ ํ ๋ค์ upload
์คํ ์์ ํจ๊ป Terraform docker_container
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ํ์ผ์ ์ปจํ
์ด๋์ ๋ณต์ฌํฉ๋๋ค. Terraform ๋์ docker-compose๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด์ด ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
ํด์ผํฉ๋๋ค. docker-compose๊ฐ ์ปจํ
์ด๋ ๋ณ ๊ตฌ์ฑ์ ๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๋๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค.
์ด ํธ๋ 2 ๋ ๋์ ๊ณต๊ฐ๋์์ต๋๋ค. ์ด๊ฒ์ด Kubernetes๊ฐ ์ธ๊ธฐ์์ Docker๋ฅผ ์์ง๋ฅด๋ ์ด์ ์ ๋๊น? Kubernetes๋ ๊ตฌ์ฑ ๋ฐ ๋น๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Docker ํ, ์ต์ํ ๊ตฌ์ฑ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ญ์์ค.
tbf docker-compose๋ k8s์ ์ ํํ ๋น๊ตํ ์ ์์ผ๋ฉฐ ํ๋ก๋์ ์ฉ๋๋ก ๊ถ์ฅ๋์ง ์์ต๋๋ค. ๊ฐ๋ฐ ๋ฐ ๋น ๋ฅธ ํ ์คํธ๋ฅผ์ํ ๊ฒ์ ๋๋ค. docker swarm์ k8s์ ๋น๊ตํ ์ ์์ผ๋ฉฐ ๋งค์ฐ ๋จ์ํ์ง๋ง ๊ตฌ์ฑ ๋ฐ ๋น๋ฐ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
๊ฐ๋ฐ๋ง์์ํ ๊ฒ์ด๋ผ๋ฉด์ด ๋ฌธ์ ๊ฐ ๋ ๋ง์ ์ด์ ์
๋๋ค.
์๋ํด์ผํฉ๋๋ค. ์๋ฑํ "๋ฐ ํจํด"๊ท์น์
์ค์ํฉ๋๋ค (์ ์์ ์ธ ์ฌ์ฉ์ด ํ๋ถํ๊ธฐ ๋๋ฌธ์
์ํฐ ํจํด๊ณผ ๋ฎ์ง ์์ ๊ฒฝ์ฐ).
2020 ๋
3 ์ 3 ์ผ ํ์์ผ ์คํ 12:56 David Milum [email protected]
์ผ๋ค :
tbf docker-compose๋ k8s์ ์ ํํ ๋น๊ตํ ์ ์์ผ๋ฉฐ ๊ถ์ฅํ์ง ์์ต๋๋ค.
์์ฐ ์ฉ. ๊ฐ๋ฐ ๋ฐ ๋น ๋ฅธ ํ ์คํธ๋ฅผ์ํ ๊ฒ์ ๋๋ค. ๋์ปค
swarm์ k8s์ ๋น๊ตํ ์์๋ ๊ฒ์ ๋๋ค.
๋จ์ํ์ง๋ง ๊ตฌ์ฑ ๋ฐ ๋น๋ฐ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/5523?email_source=notifications&email_token=AAGRIFZTKGRWMZZ5H6DG3FDRFUSEJA5CNFSM4EKAVONKYY3PNVWWK3TUL52HS4DFVREXG43VMVORPWSZ5W594W2ZLOBW63LNMVXHJKissue ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAGRIF4NTQQSR2QQWPJT6PLRFUSEJANCNFSM4EKAVONA
.
๋ ๋ค๋ฅธ "๋ฐ ํจํด":
๋ก์ปฌ ๊ฐ๋ฐ ์ค์๋ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
์ docker-compose
๋ฅผ ์ฌ์ฉํ๊ณ ํ๋ก๋์
์๋ k8์ ์ฌ์ฉํฉ๋๋ค.
Docker์ ์กฐ์ธ ์ ๋ฐ๋ผ ์๋น์ค ์์ / ์ข
๋ฃ ์์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด wait-for-it.sh
์คํฌ๋ฆฝํธ๋ฅผ ๊ตฌํํ์ต๋๋ค.
์ด ํ์ผ ํ๋์ ๋ํด ๊ฐ ์๋น์ค์ ๋ณผ๋ฅจ์ ๋ง์ดํธํ์ง ์์ผ๋ ค๋ฉด ๊ฐ ์๋น์ค์ Dockerfile์ด ํฌํจ ๋ ๋๋ ํ ๋ฆฌ์ ์คํฌ๋ฆฝํธ ์ฌ๋ณธ์ด ํ์ํฉ๋๋ค.
๋์ docker-compose
๊ฐ ๋ก์ปฌ์์ ์คํ๋ ๋ ๊ฐ ์ปจํ
์ด๋์ ๋ณต์ฌ๋๋ wait-for-it
์คํฌ๋ฆฝํธ์ ๋จ์ผ ๋ณต์ฌ๋ณธ์ ์ต์์ ๋๋ ํฐ๋ฆฌ์ ์ ์งํ๊ณ ์ถ์ต๋๋ค. ์ด๋ ๋ด ์๋น์ค์ Dockerfile
์ค์ผ์ํค๋ ์ด๋ฌํ ์ฐ๋ ค๋ฅผ ์ํ์ง ์๋๋ค๋ ์๋ฏธ์
๋๋ค.
์๋จธ์จ์ ํ๋ ์ด๋ ๊ฒ ์ผ์ต๋๋ค. "์ด๋ฆฌ์์ ์ผ๊ด์ฑ์ ์์ ์ ์น๊ฐ์ ์ฒ ํ์์ ์ ์๋ค์ด ์ญ๋ฐฐํ๋ ์์ ๋ง์์ ํ ๊ณ ๋ธ๋ฆฐ์ ๋๋ค."
์๋ง๋ ์ฌ์ฉ์์ ๋ง์ ๋ค์ด์ผ ํ ๋์ ๋๋ค ...
@Phylodome ์ ์ปจํ
์ด๋ ์ํ ํ์ธ๊ณผ docker-compose
depends_on
์์ต๋๊น? ์ด๊ฒ์ด ๋ด๊ฐ ๊ฑด๊ฐํ ์ปจํ
์ด๋ ์์ ์ข
์์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
๋ด ์ดํด๋ wait-for-it.sh
์ (๋) ์ ๋ง ํดํน์ด๋ผ๋ ๊ฒ์
๋๋ค. ์๋น์ค ์์ฒด๊ฐ์ค๊ณ ๊ฐ๋ ์ข
์์ฑ์ ํ๋ ฅ์ ์ด์ด์ผํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์คํํธ ์
์ ๊ทธ์ ๊ฐ๋ณ์ ์ธ ๊ฒฝ์ฐ์
๋๋ค.
@ianfixes "๊ทํ์ ์๋น์ค"๋ docker-compose ์๋น์ค ์์ฒด๋ฅผ ์๋ฏธ
"๊ทํ์ ์๋น์ค"๋ docker-compose ์๋น์ค ์์ฒด๋ฅผ ์๋ฏธํฉ๋๊น, ์๋๋ฉด docker-compose๋ฅผ ์ฌ์ฉํ๋ ๋น์ฌ๊ฐ ์์ฑํ ์๋น์ค์์์ ๊ฐ์ด "๋น์ฌ์"์๋น์ค๋ฅผ ์๋ฏธํฉ๋๊น?
๊ฐ๋ฐ์๋ก์ ๊ตฌ์ถํ๋ ์๋น์ค๋ ํ๋ ฅ์ ์ด์ด์ผํฉ๋๋ค. ์ด๊ฒ์ ๋ค์ ๋ฌธ์์ ๋ฐ๋ฅธ ๊ฒ์ ๋๋ค : https://docs.docker.com/compose/startup-order/
๋ฐ์ดํฐ๋ฒ ์ด์ค (์ :)๊ฐ ์ค๋น ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋ฌธ์ ๋ ์ค์ ๋ก ๋ถ์ฐ ์์คํ ์ ํจ์ฌ ๋ ํฐ ๋ฌธ์ ์ ํ์ ์งํฉ์ ๋ถ๊ณผํฉ๋๋ค. ํ๋ก๋์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ๋๊ฑฐ๋ ์ธ์ ๋ ์ง ํธ์คํธ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฌํ ์ ํ์ ์ค๋ฅ์ ๋ํด ํ๋ ฅ์ ์ด์ด์ผํฉ๋๋ค.
์ด๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์คํจ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ์ ๋ค์ ์ค์ ํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ์ญ์์ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฐ๊ฒฐ์ ์ฌ ์๋ํ๋ฉด ๊ฒฐ๊ตญ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ ์ ์์ํ ๋์ ์ด๋ค ์ด์ ๋ก ๋ ์ฐ๊ฒฐ์ด ๋์ด ์ง ๋๋ง๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์์ด ๊ฒ์ฌ๋ฅผ ์ํํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋์ด ์์ค์ ๋ณต์๋ ฅ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๋ํผ ์คํฌ๋ฆฝํธ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ํ ๋๊ธฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ธ๊ธํฉ๋๋ค.
๋๋ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋จ์ง ๋ก์ปฌ ๊ฐ๋ฐ์์ํ ๊ฒ์ด๊ณ , k8s์์ ํ๋ก๋์ ์๋น์ค ๊ฒ์ฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ํ ๋ค๋ฅธ ์ ๋ต์ด ์๊ธฐ ๋๋ฌธ์, ๋๋ ์ ๋ด๊ฐ ์ ํธ ํ ๊ฒ์ ๋๋ค. (์ : Webpack์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ํตํด UI ๊ฐ๋ฐ์ ์ํํ๊ธฐ์ํ ๋ณผ๋ฅจ ๋ง์ดํธ ๋ฌธ์ ).
์ด์จ๋ , ์ฌ์ฉ์์ ์ฌ๋์ ๋งก๊ฒจ์ผํ๋ ๊ธฐ๋ฅ์ด ๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ๊ธด ์ฌ์ฉ ์ฌ๋ก ๋ชฉ๋ก์์ ๋ ํ๋ ์ผ๋ฟ์ ๋๋ค.
์ ๋ฅผ ํฅํ ๋ถ๋ ธ๋ฅผ ๋ฃ๊ณ ์์ผ๋ฉฐ ๊ทํ์ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ์์น ์๋ "์กฐ์ธ"์ ๋ฃ๋ ๊ฒ์ด ์ ์ค๋ง ์ค๋ฌ์ด์ง ์ดํดํฉ๋๋ค. ํ์ง๋ง ์ด๋ป๊ฒ ์ฌ๊ณผํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ๋น์ ์ด "Docker์ ์์ ์ ์กฐ์ธ"์ด๋ผ๊ณ ๋ถ๋ฅด๋ URL์ ํ ์คํธ๋ฅผ ์ธ์ฉํ๋๋ฐ, ์ด๊ฒ์ _ ๋ช ์ ์ ์ผ๋ก _ ๋๊ธฐ ์คํฌ๋ฆฝํธ๊ฐ "๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋"๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ๋งํฉ๋๋ค. ๊ทธ๋งํ ๊ฐ์น์ ๋ํด์๋ ์ด์จ๋ ๋ฏธ์ํฉ๋๋ค.
๋ถ๋ ธ๊ฐ ๋ค๋ฆฌ์ง ์์ต๋๋ค. ๋น์ ์ ๊ฝค ๋ช ๋ฐฑํ ๊ธฐ๋ฅ์ด๋์ด์ผํ๋ ๊ฒ์ ์ธํฐ๋ท ๊ฒ์์ํ๋ค๊ฐ 100 ๊ฐ์ ๋๊ธ ์ค๋ ๋๋ฅผ ์ฐ์ฐํ ๋ฐ๊ฒฌ ํ ๋๊ตฐ๊ฐ์ ๋ถ๋ ธํ ์ด์กฐ๋ฅผ ๋ค์์ ๋, ์ผ๋ จ์ ๋ฉ์ธํ ์ด๋๋ค์ด ์ง์์ ์ผ๋ก ํ์ํ๊ณ ์์ ํ ์ ํจํ ๊ธฐ๋ฅ์ ๋ํ ์ปค๋ฎค๋ํฐ์ ํ์์ ๊ฑฐ๋ถํ์ต๋๋ค.
๋๋ ์ฌ๊ธฐ์์ ๋์ ๊ฒฝํ์ ๊ณต์ ํ์ง ์์๋ค. ๋๋ ์ฌ๊ณผ๋ฅผ ์ํ๋ค. Docker ์ฌ์ฉ์๊ฐ compose
์ฌ์ฉํ ๋ ์ถ๊ฐ์ ์ธ ์ ์ฐ์ฑ์ ์ํ๋ค๋ ์ฆ๊ฑฐ๋ฅผ ๊ธด ๋ชฉ๋ก์ ์ถ๊ฐํ๊ธฐ ์ํด ๊ฐ๋จํ ๊ณต์ ํ์ต๋๋ค.
๋ฌผ๋ก ๋ค๋ฅธ ๋๊ตฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฌํ ์ ์ฐ์ฑ์ ๋จ์ฉ ๊ฐ๋ฅ์ฑ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ๋งํ๋ฉด ํจ์ฌ ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์์๋ ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ผํ๋ ๊ฒฝ์ฐ์๋ ๋์ผํ ์ ์ฌ๋ ฅ์ด ์กด์ฌํฉ๋๋ค.
๋ํ ์ฌ์ฉ์๋ฅผ ๋ณ๋ช ์ค๋ฝ๊ฒ ๊ฐ์ค ๋ผ์ดํ ํ๋ ๊ฒ์ ๋์ ๋ชจ์ต์ ๋๋ค.
๋๋์ด ํ๋ก์ ํธ์ ๊ด๋ฆฌ์๋ ์๋๊ณ ๊ธฐ์ฌ์๋ ์๋๋ฉฐ ํผ๋์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ๊ฐ ์ ๊ณต ํ ์์๋ ์์ ๋์์ด ์์น ์๊ณ ๋์์ด๋์ง ์๋๋ค๊ณ ์๊ฐํ ๊ฒ ๊ฐ์ต๋๋ค. ์๊ฐ์ ๋ญ๋นํ๊ฒ๋์ด ์ฃ์กํฉ๋๋ค.
๋ถ์ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ์ธ Go ์ปจํ
์ด๋์์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. .env
ํ์ผ์ด Go ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฃจํธ์ ํฌํจ๋์ด์ผํ๋ฏ๋ก ๋ณ๋์ .env
์ ๋ง๋ค์ด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋์ด ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ๋ด ์ต์์ .env
ํ์ผ์ ๊ฐ์ง๊ณ ๋น๋ ํ ๋ Go ์ปจํ
์ด๋์ ๋ณต์ฌํฉ๋๋ค. ์ถ์ ํด์ผ ํ ํญ๋ชฉ์ด ์ ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ Go ์ปจํ
์ด๋์ Dockerfile
๋ฅผ ํตํด์ด ํ์ผ์ ๋ง๋ค๊ฑฐ๋ ํด๋น ์ปจํ
์ด๋์ ๋ํด .env
ํ์ผ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐ ํ ๋๋ง๋ค ๋ ๊ณณ์์ ์
๋ฐ์ดํธํด์ผํฉ๋๋ค. ์ฌ๊ธฐ์ ์ข์ ์ฌ์ฉ ์ฌ๋ก. ๋๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ cp
ํ์ผ์ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
COPY ๊ธฐ๋ฅ์ ๋ํ +1
์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฟ ๋ฒ๋ค ํฐ์ค์์ ์ฌ์ด๋์นด๋ก ์ด๊ฒ์ ๋ฌ์ฑํ์ผ๋ฉฐ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ํฐ ํจํด์ด ์๋๋ผ ๋์ปค ๊ตฌ์ฑ์ ์ ์งํ๋ ๊ธฐ๋ฅ ์ค ํ๋ ์ผ๋ฟ์ ๋๋ค.
๋ญ๊ฐ ๋น ์ก์์ง๋ ๋ชจ๋ฅด์ง๋ง 5 ๋ถ ๋์ ์ฑ์ ๋น๋ ํ ๋๋ง๋ค ๋น๋ ํด๋๊ฐ "์ ๋์ "์ด๋ฉฐ ๋ถ์ผ์น๋ก ์ธํด ์ฑ์ด ์์๋์ง ์์ต๋๋ค.
์ปจํ
์ด๋์ ๋น๋ ํด๋๋ฅผ _copy_ํ๋ ๊ฒ์ ์ ํธํ๋ฏ๋ก ์ปจํ
์ด๋๋ฅผ ์์ํ ๋ ๋ด๋ถ ํด๋๋ฅผ ๋์ ํฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ฑ์ ์ปจํ
์ด๋๋ฅผ ์ค์ง / ์์ํ ๋ 1 ์ด ์ ๋๋ง ์คํ๋ผ์ธ ์ํ๊ฐ๋ฉ๋๋ค.
docker
์ด๋ฏธ ์ง์ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ํฐ ํจํด์
๋๊น? docker-compose
๋์ปค์ ์ ์ฉ์ฑ์ ๋ฐ๋ผ ๊ฐ๋ค๋ ๊ฒ์ ์ดํด๊ฐ ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ๊ฒํ์ง ์๋ ๊ฒ์ ๊ทธ ์์ฒด๋ก ์ํฐ ํจํด์
๋๋ค.
์ด๊ฒ์ ๋ฌธ์ ์ ์ ์ปจํ ์ด๋๊ฐ ๋ค์ ์์ฑ ๋ ๋๋ง๋ค ์์ ์ ๋ฐ๋ณตํด์ผํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ทผ์์์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค (๋ฐ๋ผ์ "๋ฐ ํจํด"์ด๋ผ๋ ์ฉ์ด). ํ์ฅ ์ฑ์ด ๋งค์ฐ ๋ฎ๋ค๋ ์ฌ์ค์ ๋งํ ๊ฒ๋ ์์ต๋๋ค (์ปจํ ์ด๋๊ฐ 10 ๊ฐ? 20? 100?).
๊ทธ๊ฒ์ ๊ฐ๋ฐ์์๊ฒ ๋ฌ๋ ค ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋จ์ผ ๋ก์ปฌ ๊ตฌ์ฑ ํ์ผ์ ๋ณต์ฌํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ค๋ฒ ํค๋๊ฐ ์ ์ต๋๋ค. ์นผ์ ๋น๋ํ์ง ๋ง์ญ์์ค.
PS ๋ด ์ฌ์ฉ ์ฌ๋ก; Dockerfile์ด์๋ ํ๋ก์ ํธ์ Nginx ์ปจํ ์ด๋์ ๊ตฌ์ฑ์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
๋ ์ด์ ์๋ ์ฌ๋.
์ ํ๋ก์ ํธ๋ฅผ ์ค์ ํด์ผํ๊ณ
๋๊ตฌ, Lando๋ ์ด๊ฒ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ์ผ๋ฉด ์ข๊ฒ ์ด
๋นจ๋ฆฌ.
๋ ๋น ๋ฅด๊ณ , ์ดํดํ๊ธฐ ์ฌ์ฐ ๋ฉฐ, ์ฆ์ ์ฌ์ฉํ ์์๋ ์ง์ ๋ฐ
ํํฅ์ (์ :) ์ ์ง ๊ด๋ฆฌ์ / ๊ธฐ์ฌ์๊ฐ ์์ต๋๋ค.
๊ทํ์ ์๊ฒฌ ์ ๋ํด @ chris-crone ...
๊ตฌ์ฑ ํ์ผ ๋๋ ๋ถํธ ์คํธ๋ฉ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ Docker Config๊ฐ ์์ต๋๋ค. ์ด๊ฒ๋ค์ ๋น๋ฐ๊ณผ ๋น์ทํ๊ฒ ์๋ํ์ง๋ง ์ด๋์๋ ์ฅ์ฐฉ ํ ์ ์์ต๋๋ค. ์ด๋ค์ Swarm ๋ฐ Kubernetes์์ ์ง์๋์ง๋ง docker-compose์์๋ ์ง์๋์ง ์์ต๋๋ค. ์ด์ ๋ํ ์ง์์ ์ถ๊ฐํด์ผํ๋ฉฐ์ด ๋ฌธ์ ์ ๋์ด๋ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
docker-compose๊ฐ swarm ๊ตฌ์ฑ๊ณผ ํจ๋ฆฌํฐ์ ๋ํ ๊ตฌ์ฑ ์ง์์ ๊ตฌํํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๊น?
์ด๊ฒ์ ๋ํ ํฐ์ผ์ด ์๋ค๋ฉด (๋๋ ๊ด์ฐฎ์ ํฐ์ผ์ ๋ง๋ค์ด์ผํ๋ ๊ฒฝ์ฐ), ๊ทธ ํฐ์ผ์ ๊ตฌ๋ ํ๊ณ ์ด ์ฐ๋ ๊ธฐํต์์ ๊ตฌ๋ ์ ์ทจ์ํ๊ณ ์ถ์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ด๊ฒ์ ๋ซ๊ณ ๊ทธ๊ฒ์ ์ฐ๊ฒฐํ์ง๋ง ๊ทธ๊ฒ์ ๋๋ฟ์ ๋๋ค.
@harpratap ๋น์ ์ด ์ณ์ง ๋ง, ๋จ์ ์ / folder_in_container๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ๋น์ด ์์ด์ผํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฎ์ด
COPY ๊ธฐ๋ฅ์ด ์์ผ๋ฉด +1. ์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ์ํ๊ฒ ๊ตฌ์ถํ๊ณ ๊ฐ๋ฐ ์ค์ ์์ํ ๊ตฌ์ฑ์์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ก ๊ทธ๊ฑฐ์ฃ . ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์ฅํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ฌ๋ SALT๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ฑ์ ํ์ํ .conf ํ์ผ์ ๋น๋ํฉ๋๋ค. ํ๋์ ๋น๋-๊ธฐ๋ณธ ์ฌํญ-๊ทธ๋ฐ ๋ค์ Docker- ๊ตฌ์ฑํ์ฌ ๊ณ ์ ํ ๋ถ๋ถ (MAC ์ฃผ์, IP, ํฌํธ, ๋ผ์ด์ผ์ค, ๋ชจ๋ ๋ฑ)์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ณ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค. ๋ช ๋ น ์ค์์ ์ํ ํ ์ ์์ง๋ง ํจ์ฌ ์ฝ๊ณ ๊ฐ๋จํฉ๋๋ค. docker-compose์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
์ ์ค ์ผ์ด์ค๊ฐ ์์ต๋๋ค. SSL์ ์ค์ ํด์ผํ๋ ํ ์คํธ ๋น๋๊ฐ ์์ต๋๋ค. ์ธ์ฆ์๋ docker-compose์ ์๋น์ค์ ์ํด ์์ฑ๋ฉ๋๋ค ... ๊ทธ๋ฐ ๋ค์ ํด๋น ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ ์ปจํ ์ด๋์ ์ถ๊ฐํฉ๋๋ค ... ๋ง์ดํธํ๋ฉด ๊ธฐ์กด ์ธ์ฆ์๊ฐ ์์ค๋๊ณ Docker ๋น๋์ ๋ฃ์ ์ ์์ต๋๋ค. ์์ง ์กด์ฌํ์ง ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก 2 ๊ฐ์ docker-compose-1์ ์คํํ์ฌ ์๋น์ค๋ฅผ ์์ํ์ฌ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ ๋ค๋ฅธ ํ๋๋ฅผ ์คํํ์ฌ ์๋น์ค๋ฅผ ๋น๋ํ๊ณ ํ ์คํธ๋ฅผ ์คํํด์ผํฉ๋๋ค. ์ด์ง๋ฌ ๋์.
์ฌ๊ธฐ์์ ๋ง์ ๋ฌธ์ ๋ฅผ ๋ณด์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ธฐ๋ฅ์ ๋ํ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ ์ํ์ง๋ง ์ ์ง ๊ด๋ฆฌ์๊ฐ ์๊ฐํ๋ ๊ฒ, ์ํฐ ํจํด์ด๊ฑฐ๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ์ง ์๊ฑฐ๋ ๋ค๋ฅธ ์ด์ผ๊ธฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฒฉ์ถ๋์์ต๋๋ค. .
ํ ์ฌ๋์๊ฒ๋ ๋ฐ ํจํด์ฒ๋ผ ๋ณด์ผ์ง ๋ชจ๋ฅด์ง๋ง์ด ๊ธฐ๋ฅ์ ์์ฒญํ๋ 1000 ๋ช ์ ์ฌ๋๋ค์ ๊ทธ๋ ์ง ์๋ค๊ณ ์๊ฐํ๋ ์ฌ๋๋ค๋๋ค์ ํ์๊ฐ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๋์์ด ํ์ํ๋ฉด ๋ง์ ๋ถ๋ค์ด ๋์์ ์ค ์์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก : ๊ตฌ์ฑ ์ธ์๋ 5 ๊ฐ์ Rails ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ (Debian)์ ์ค์นํด์ผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (RPM)๊ฐ ์์ต๋๋ค. Ruby / Rails ๋ฒ์ ์ด ๋ค๋ฅด๋ฏ๋ก ๋์ผํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํ์ผ์ ๋จ์ผ ์์น์ ์ ์ฅํ๊ณ ๋น๋ ํ ๋ ์ปจํ ์ด๋์ ๋ณต์ฌ ํ ์ ์์ด์ผํฉ๋๋ค. 1.5GB์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๊ตฌ์ถํ๋ ๋์.
์๋ ํ์ธ์.
๋ด ์ฌ์ฉ ์ฌ๋ก : ๊ตฌ์ฑ ์ธ์๋ 5 ๊ฐ์ Rails ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ (Debian)์ ์ค์นํด์ผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (RPM)๊ฐ ์์ต๋๋ค. Ruby / Rails ๋ฒ์ ์ด ๋ค๋ฅด๋ฏ๋ก ๋์ผํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํ์ผ์ ๋จ์ผ ์์น์ ์ ์ฅํ๊ณ ๋น๋ ํ ๋ ์ปจํ ์ด๋์ ๋ณต์ฌ ํ ์ ์์ด์ผํฉ๋๋ค. 1.5GB์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๊ตฌ์ถํ๋ ๋์.
์ด๋ฅผ ์ํด ๋ค๋จ๊ณ ๋น๋ ๋ฅผ ์ดํด ๋ณด์ จ์ต๋๊น? ๋ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ด๋ฏธ์ง์ ๋์ผํ Dockerfile์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์๋ฅผ ์ธ์ ํํ๊ณ ๊ฐ ์ด๋ฏธ์ง์ ํ์ํ ๋นํธ ๋ง ํฌํจ ํ ์ ์์ต๋๋ค.
ํ๋์ ์ข์ ์๋ Docker Compose๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ ์ ๋๋ค. ์ด๊ฒ์ Debian ๋๋ Alpine์ ์ฌ์ฉํ์ฌ ๋น๋๋์ง๋ง ๊ณตํต ์ฝ๋๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
์ค์ ์์ docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ 12 โโ๊ฐ์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋๋ฆฝ๋๋ค. ์๋ฎฌ๋ ์ดํฐ๋ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ์ง๋ง ๊ฐ ๋์์ ๋ํด ํ๋์ init ํ์ผ์ด ๋ค๋ฅด๋ฉฐ์ด ํ์ผ์ ์์์ ์ฌ์ฉ๋ฉ๋๋ค (์๋ฒ๊ฐ ์คํ ์ค์ผ ๋ ์ญ์ ๋จ). ํ๋์ ํ์ผ์ด ๋ค๋ฅด๋ค๊ณ ํด์ ๊ฑฐ์ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ 12 ๊ฐ ์ ๋ ๋ง๋ค์ด์ผํ๋ค๊ณ ์ ๋ง๋ก ์ ์ํ๊ณ ์์ต๋๊น? IMO๋ ๋ง์ด๋์ง ์์ต๋๋ค.
docker๋ฅผ ์ฌ์ฉํ๋ฉด --copy-service ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ์ด๋ฅผ ์ํ ํ ์ ์์ต๋๋ค. docker-compose์ ํจ๊ป ์ฌ์ฉํ ์์๋ ๋์์ด ์์ต๋๊น?
์๋ ํ์ธ์ @megaeater ,
docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ 12 โโ๊ฐ์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋๋ฆฝ๋๋ค. ์๋ฎฌ๋ ์ดํฐ๋ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ์ง๋ง ๊ฐ ๋์์ ๋ํด ํ๋์ init ํ์ผ์ด ๋ค๋ฅด๋ฉฐ์ด ํ์ผ์ ์์์ ์ฌ์ฉ๋ฉ๋๋ค (์๋ฒ๊ฐ ์คํ ์ค์ผ ๋ ์ญ์ ๋จ).
์ด๊ฒ์ ํฅ๋ฏธ๋ก์ด ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. ๋ช ๊ฐ์ง ์ง๋ฌธ : ์ด๋ฌํ ์๋ฎฌ๋ ์ดํฐ (๋๋ ๊ทธ ์ผ๋ถ)๊ฐ ํ๋ก๋์ ํ๊ฒฝ์์ ์คํ๋ฉ๋๊น (์ : ๊ฐ๋ฐ์์ ์ปดํจํฐ ๋ CI๊ฐ ์๋)? ์ฝ๋๊ฐ ์ด๋ ค์๋ ๊ฒฝ์ฐ (๋๋ ์ ์ฌํ ์์คํ ์ด์๋ ๊ฒฝ์ฐ) ์ ๊ฐ ์ดํด๋ณผ ์ ์๋๋ก ์ ๋ฅผ ๋งํฌ ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ฐ์ธ๋ ๋ง์ดํธ ๋์ ์ฌ๋ณธ์ด๋ ์ด๋ฌํ ํ์ผ์ ๋ํ ๋ณผ๋ฅจ์ ์ํ๋ ์ด์ ๋ฅผ ์๋ ๊ฒ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค.
ํ๋์ ํ์ผ์ด ๋ค๋ฅด๋ค๊ณ ํด์ ๊ฑฐ์ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ 12 ๊ฐ ์ ๋ ๋ง๋ค์ด์ผํ๋ค๊ณ ์ ๋ง๋ก ์ ์ํ๊ณ ์์ต๋๊น? IMO๋ ๋ง์ด๋์ง ์์ต๋๋ค.
์ด๋ฏธ์ง๋ ์ ํํ ์ด๋ฌํ ์ด์ ๋ก ๋ ์ด์ด ๊ธฐ๋ฐ์ ๋๋ค. ๋ชจ๋ ์ด๋ฏธ์ง๋ ๋ค๋ฅธ ํ์ผ์ ํฌํจํ๋ ๋ ์ด์ด๋ฅผ ์ ์ธํ๊ณ ๋์ผํ ๋ ์ด์ด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์ปจํ ์ด๋ ์์ฑ ๋ณต์ฌ์ ๊ฐ์ ๋ฌธ์ ๋ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๋์ ํ๊ฒฝ์์ ์คํํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค (์ : ์ฃผ์ ๋ ผ๋ฆฌ ์ฌ ์์ฑ ํ์). ํจํด์ด ์ค์ผ์คํธ๋ ์ด์ ๋ ํ๊ฒฝ์์ ๊นจ์ง๊ธฐ ์ฌ์ฐ๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ Compose์์ ์ด์ ๊ฐ์ ๊ฒ์ ๊ตฌํํด์๋ ์๋๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค. ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ฌ์ฉ์๊ฐ ํ๋ก๋์ ์์ ๋ก์ปฌ๋ก ์๋ํ๋ ๊ฒ์ ์ฌ์ฌ์ฉ ํ ์ ์๊ฒ๋๋ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ์ผ์ ์ค์งํ๊ณ ๋์ผํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค.
@ chris-crone ๋๊ธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ docker๋ฅผ ์คํํ์ง ์๊ณ ๊ฐ๋ฐ ๋ชฉ์ ์ผ๋ก ๋ง ์ฌ์ฉํฉ๋๋ค. ๋ณผ๋ฅจ ์ฌ์ฉ์ ๋ฌธ์ (์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ ๊ฒฝ์ฐ)๋ ์๋ฎฌ๋ ์ดํฐ (ํ์ฌ)์ ์์์ ํ์ผ์ ์ญ์ ํ๋์ด ์์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ญ์ ์ ์คํจํ๋ฉด ์คํฌ๋ฆฝํธ ์คํ์ด ์ค์ง๋๋ฏ๋ก rw๋ก ๋ง์ดํธํด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ผ ์ญ์ ๊ฐ ํ์ฉ๋๋ฉด ์๋ณธ์ด ์ญ์ ๋์ง ์๋๋ก ์ด๋ฌํ ํ์ผ์ ์ ๊ณตํ๊ธฐ์ํ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ docker-compose ์์ ์ปดํฌ์ง์ ์ ๋์ด๊ธฐ ์ํด ์ผ์ข ์ ์ธ๋ถ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํฉ๋๋ค.
@ chris-crone ๋งํฌ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ ๊ฐ ์ดํด๋ณด๊ณ ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ํจ๊ณผ๊ฐ ์๋์ง ๋ณผ๊ฒ์ ๐
์๋
ํ์ธ์ @ chris-crone ์ ๋ Multi Stage ๋น๋๋ฅผ ์ฌ์ฉํด ๋ณด์๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ๊ตฌ์ฑ์ ํ ์์น์๋ง ์ ์งํ๊ณ ์ฃผ๋ณ์ ๋ณต์ฌํ๋ ๋ฐ ๋์์ด๋์์ง๋ง ์ด์ ๋ .dockerignore
๊ฐ ์ด๋์์๋ ๋ฌด์๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฐฐ์นํฉ๋๋ค.
์๋ก์ด DOCKER_BUILDKIT
์ต์
๊ณผ ํจ๊ป Docker๋ฅผ ์ฌ์ฉํ ๋ ์๋ํ์ง๋ง docker-compose๋ฅผ ์ฌ์ฉํ ๋๋ ์๋ํ์ง ์๊ณ COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build
์๋ํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค. ์ด๋ค ์์ด๋์ด?
์ด ๋ฌธ์ ๋ฅผ ์ฐ์ฐํ ๋ฐ๊ฒฌํ์ ๋ compose์์ .dockerignore
๋ฅผ ์ฐพ์ ์์น๋ฅผ ์ง์ ํ๋ ์ต์
์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค. https://github.com/docker/compose/issues/6022 ๋ค์, ๋ซํ์ต๋๋ค. coz 1 ๊ธฐ์ฌ์๋ ์ด๊ฒ์ด ์ ์ฉํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์งํ ๋งํ๋ฉด ๊ฝค ๋ต๋ต ํด์ !!
์ด๋ MacOS์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ฐ๋ฐ์ฃผ๊ธฐ๋ฅผ ์ต๋ํ ํ๋ก๋์ ์ ๊ฐ๊น๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์ ํ Continuous Delivery ๊ดํ์์ํ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋๋ฅผ ๋น๋ ํ ๋ค์ ํ์ฌ ์์ ์ค์ธ ์ํํธ์จ์ด์ ์ ๋ฒ์ ์ ์ปจํ ์ด๋์ ๋ฐ์ธ๋ฉํ์ฌ ๋น๋์ฃผ๊ธฐ ์๊ฐ์ ์ ์ฝํฉ๋๋ค. ์ํ๊น๊ฒ๋ ๋ฐ์ธ๋ ๋ง์ดํธ๋ ๋น์ฉ์ด ๋งค์ฐ ๋ง์ด ๋ค๊ณ 3 ~ 5 ๋ฐฐ ๋๋ฆฝ๋๋ค.
์๋ฅผ ๋ค์ด, tomcat์ ์์ ์๊ฐ์ ์ปจํ ์ด๋์์๋ ๋ด ์ฑ์ ๊ฒฝ์ฐ ์ฝ 3 ์ด์ ๋๋ค. ~ / .bash_history์ ๋ฐ์ธ๋ ๋ง์ดํธ๋ฅผ ์ถ๊ฐํ๋ฉด 4 ์ด์ ๋๋ค. ๋ด ์ฑ์ ๋ฐ์ธ๋ ๋ง์ดํธ๋ฅผ ์ถ๊ฐํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ฝ 18-20 ์ด์ ๋๋ค. Linux์์ ๋ฐ์ธ๋ ๋ง์ดํธ ์ฑ๋ฅ์ ๋ก์ปฌ ํ์ผ ์์คํ ๊ณผ ๋น์ทํ์ง๋ง MacOS์์๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ํ๋ฃจ์ 100 ๋ฒ์ผ๋ก ํ์ฅํ๋ฉด ์ค์ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ์ฒ์์ผ๋ก ์ฑ์ ์ก์ธ์ค ํ ๋ ๊ณ์๋๋ ์๋ ์ ํ๊ฐ ํฌํจ๋์ง ์์ต๋๋ค. ์ฝ๋ ํ์ผ์ด ์บ์ ๋ ๋๊น์ง. ๋์๊ฒ ๊ทธ๊ฒ์ ์์ ๊ตฌ์ ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด ๋ชจ ๋๋ฆฌ ์ ์ค๋ผํด DB์ ์ฐ๊ฒฐํ๋ ์ธํฐ๋ท ์ง์ฐ์ ํฌํจํ์ฌ 3 ๋ถ์ ์๋ฏธํ๋ฉฐ ์ฌ์ ํ ๊ด์ฐฎ์ ๋ณด์ด๋์ง ํ์ธํฉ๋๋ค. ์ ์ฅ covid-19, ๋กค.
์ด์์ ์ผ๋ก๋ docker-compose๋ฅผ ๋ค์ ์คํํ๊ณ ์คํ์ค์ธ ์ปจํ ์ด๋์์ ๋ด ์ฑ์ "์ ๋ฐ์ดํธ"ํ๊ณ tomcat์ ๋ค์๋ก๋ํ๋๋ก ์์ฒญํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. tomcat ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ก๋ ํ ์ ์์ง๋ง ๊ด๋ฆฌ๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฐฑ์๋ ์ฑ๋ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ์๋ฃจ์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค.
docker-compose๊ฐ ํ๋ก๋์ ๋ฐฐํฌ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ์๋ ์ ํฉํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด ์ฌ์ฉ ์ฌ๋ก๋ ํ ๋ก ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค : https://github.com/docker/compose/issues/3593#issuecomment -637634435
@ chris-crone
์๋ ํ์ธ์.
๋ด ์ฌ์ฉ ์ฌ๋ก : ๊ตฌ์ฑ ์ธ์๋ 5 ๊ฐ์ Rails ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ (Debian)์ ์ค์นํด์ผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (RPM)๊ฐ ์์ต๋๋ค. Ruby / Rails ๋ฒ์ ์ด ๋ค๋ฅด๋ฏ๋ก ๋์ผํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ํ์ผ์ ๋จ์ผ ์์น์ ์ ์ฅํ๊ณ ๋น๋ ํ ๋ ์ปจํ ์ด๋์ ๋ณต์ฌ ํ ์ ์์ด์ผํฉ๋๋ค. 1.5GB์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๊ตฌ์ถํ๋ ๋์.
์ด๋ฅผ ์ํด ๋ค๋จ๊ณ ๋น๋ ๋ฅผ ์ดํด ๋ณด์ จ์ต๋๊น? ๋ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ด๋ฏธ์ง์ ๋์ผํ Dockerfile์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์๋ฅผ ์ธ์ ํํ๊ณ ๊ฐ ์ด๋ฏธ์ง์ ํ์ํ ๋นํธ ๋ง ํฌํจ ํ ์ ์์ต๋๋ค.
ํ๋์ ์ข์ ์๋ Docker Compose๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ ์ ๋๋ค. ์ด๊ฒ์ Debian ๋๋ Alpine์ ์ฌ์ฉํ์ฌ ๋น๋๋์ง๋ง ๊ณตํต ์ฝ๋๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
๋ค๋จ๊ณ ๋น๋๋ ๋ฉ์ง์ง๋ง ๊ณ ์ ํ ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ํ๋๋ ๋์ผํ ์ปจํ
์คํธ ๋ด์์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์คํํด์ผํ๋ฏ๋ก ํญ์ ๊ฐ๋ฅํ์ง๋ ์์ต๋๋ค. ๋ํ, ์ง๊ธ๊น์ง์ ๋ด๊ฐ ์๋ ํ, ๋น์ ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ COPY --from
๋ค๋ฅธ Dockerfile์ ์ ์์ ๋ด์ฅ ์ด๋ฏธ์ง docker-compose build
(๋ ๋น์ ์ด ๊ตฌ์ถํ๊ณ ์๋์ผ๋ก ํ๊ทธ๋ฅผ ์ง์ ํ์ฌ์ด๋ฅผ ์ํ ํ ์ ๊ฐ์ ).
COPY
์์ฒด๋ ๋น๋ ์ปจํ
์คํธ์์๋ง ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์ ์์ ๋งค์ฐ ์ ํ์ ์
๋๋ค. docker cp
๋ ์ด๋ฏธ์ง์ ์ปจํ
์ด๋๊ฐ์ ๋ณต์ฌ ํ ์ ์๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ์ด๋์์๋ ๋ณต์ฌ ํ ์ ์์ต๋๋ค ( COPY --from
์ ๋น์ท ํจ).
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค (์ฝ๊ธฐ ์ ์ฉ ๊ตฌ์ฑ ํ์ผ ๋ณต์ฌ์๋ ๋ณ๊ฐ๋ก ๋ก์ปฌ ๋ณผ๋ฅจ ๋ง์ดํธ๋ ๋ค๋ฅธ ์ปดํจํฐ์ ๋ฐฐํฌ ํ ๋ ๊ฐ์ฅ ์ข์ ์๊ฐ์ด ์๋๋๋ค). ์ง๊ธํ๊ณ ์๋ ์์ ์ ๋ฐ ํจํด์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. . ๋น๋์ ์ปดํ์ผ๋๊ณ ์ถ์ ๋ JS + HTML + ์์ฐ ๋ฒ๋ค (์์ ๊ฐ๋ ์ฑ์ ์๊ฐํด๋ณด์ญ์์ค)์ ์์ฑํ๋ ์ ์ฌ์ ์ผ๋ก ์ฌ๋ฌ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ์ด๋ค ๋ชจ๋๋ฅผ ์ ๊ณตํ๋ ๋จ์ผ nginx ์๋ฒ (ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ธํด ์ฌ์ฉ์ ์ง์ ์ด๋ฏธ์ง์์ ๋น๋ ๋จ)๊ฐ ์์ต๋๋ค.
ํ์ฌ ๋ด๊ฐํด์ผ ํ ์ผ์ ์์์ "๋น๋"์ด๋ฏธ์ง์์ "๋ฐฐํฌ"ํจํค์ง๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค. ์ด์์ ์ผ๋ก๋ ์ปจํ ์ด๋ ์์ฑ ๋๋ ๋น๋์์ ์ํํด์ผํ์ง๋ง ํ์๋ "modded nginx"์์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํด์ผํฉ๋๋ค.
๋ค์ ํ๋ก์ ํธ ๋ ์ด์์์ ์ด๋ฏธ์งํํฉ๋๋ค (ํ์ ํ๋ก์ ํธ๋ ๋ณ๋์ ์ ์ฅ์์ ์์ผ๋ฉฐ ์๋ก์ ๋ํด ์์ง ๋ชปํ ์ ์์).
app1/
src/
...
Dockerfile
app2/
src/
...
Dockerfile
app3/
src/
...
Dockerfile
nginx/
...
Dockerfile
docker-compose.yml
๊ฐ app{1,2,3}/Dockerfile
ํ์ผ์๋ /usr/src/app/dist
์ฑ์ ๋น๋ํ๋ ๋์ / ๋จ๊ณ build
๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. nginx/Dockerfile
์๋ ํ๋์ ๋จ๊ณ ๋ง ์์ผ๋ฉฐ nginx/nginx
์ ์ ์ฌํ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ง๋ง ๋ชจ๋ ํ์ ํ๋ฌ๊ทธ์ธ (๊ตฌ์ฑ ์์)์ด ์์ต๋๋ค.
docker-compose.yml :
version: '3.8'
services:
app1-build:
build:
context: app1/
target: build
image: app1-build
entrypoint: ["/bin/sh", "-c"]
command:
- |
rm -vfr /dist-volume/app1 \
&& cp -vr /usr/src/app/dist /dist-volume/app1 \
&& echo "Publishing successful"
volumes:
- 'dist:/dist-volume'
app2-build:
build:
context: app2/
target: build
image: app2-build
entrypoint: ["/bin/sh", "-c"]
command:
- |
rm -vfr /dist-volume/app3 \
&& cp -vr /usr/src/app/dist /dist-volume/app3 \
&& echo "Publishing successful"
volumes:
- 'dist:/dist-volume'
#... same thing for app3-build
nginx:
build:
context: nginx/
image: my-nginx
volumes:
- 'dist:/var/www'
- # ... (config files etc)
volumes:
dist:
์ด์ ์ด๊ฒ์ ๋ถ๋ช
ํ ์ด์์ ์ด์ง ์์ผ๋ฉฐ ๊ฐ ์ฑ ๋น๋ ์ด๋ฏธ์ง๊ฐ ๋ถํ์ํ๊ฒ ์คํ๋๊ณ ๋น ๋ฅด๊ฒ ์๋ฃ๋๊ณ ๋ฐฐํฌ ๋ ์ด๋ฏธ์ง๊ฐ ๊ณต์ ๋ณผ๋ฅจ์ ์์ฃผํฉ๋๋ค (์ ๋ ์ด๊ฒ์ด ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ค๊ณ ๊ฐ์ ํ์ง๋ง ์์ง ํ์ธํ ์ ์์ต๋๋ค). copy
๋๋ copy_from
๊ฐ docker-compose ์ต์
์ธ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
version: '3.8'
services:
# assuming the images have default entrypoint and cmd combination that immediately returns with success.
app1-build:
build:
context: app1/
target: build
image: app1-build
#... same thing for app2-build app3-build
nginx:
build:
context: nginx/
image: my-nginx
copy:
- from: app1-build # as image or service, both have their pros and cons, service would mean an image associated with this service
source: /usr/src/app/dist
destination: /var/www/app1
- from: app2-build
source: /usr/src/app/dist
destination: /var/www/app2
- from: app3-build
source: /usr/src/app/dist
destination: /var/www/app3
volumes:
- # ... (config files etc)
๋ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋น๋ ๋จ๊ณ ๋๋ ์์ ๋จ๊ณ์ ์์ต๋๋ค. ์ปจํ
์ด๋ ๋๋ ์๋น์ค์ ๋ชจ๋ ์ปจํ
์ด๋ ๋ด๋ถ์์ ์์ฑ ๋ ํ์ผ์ ๊ฐ์ ธ ์ค๋๋ฐ, ์ด๋ฌํ ์ปจํ
์ด๋๋ ์๊ฒฉ Docker ์์ง์์ ์คํ๋ฉ๋๋ค. ์ง๊ธ๊น์ง docker-compose ps -qa <service> | xargs -i docker cp {}:<there> <here>
์ ๊ฐ์ ์ผ์ํ๊ณ ์์ต๋๋ค. ๋ด ์คํฌ๋ฆฝํธ์์ ๋
ํนํ๊ฒ ๋์ปค ์์ฑ์ ๊ณ ์ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@ chris-crone
๋ฐ์ธ๋ ๋ง์ดํธ ๋์ ์ฌ๋ณธ์ด๋ ์ด๋ฌํ ํ์ผ์ ๋ํ ๋ณผ๋ฅจ์ ์ํ๋ ์ด์ ๋ฅผ ์๋ ๊ฒ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค.
์๊ธฐ ํธ๋ชจ๋ฅผ ์ฆ๊ธฐ์ญ๋๊น? ๊ทธ๋ ๋ค๋ฉด MacOS์์ ๋ฐ์ธ๋ ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๐คฃ ์์ธํ ๋ด์ฉ์ ์ด์ ๊ฒ์๋ฌผ์ ์ฐธ์กฐํ์ญ์์ค.
์ด๊ฒ์ Compose์์ ์ด์ ๊ฐ์ ๊ฒ์ ๊ตฌํํด์๋ ์๋๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค. ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ฌ์ฉ์๊ฐ ํ๋ก๋์ ์์ ๋ก์ปฌ๋ก ์๋ํ๋ ๊ฒ์ ์ฌ์ฌ์ฉ ํ ์ ์๊ฒ๋๋ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ์ผ์ ์ค์งํ๊ณ ๋์ผํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค.
@ chris-crone ๋๋ฌด ์์ฃผ ์ฌ๋๋ค์ด ๊ตฌ์ฑ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ๊ด๋ฆฌํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ด ๋์ปค์ ๋ํ ์ํฐ ํจํด์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๋๋จํ ๊ฐ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ป๊ฒ ๋ ์ฐ๋ฆฌ๊ฐ docker์ Apple์ด ๊ฒฐํฉ ๋ง์ดํธ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํจ๊ป ์ผํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์ ์ด๋ ๋์๊ฒ๋ docker compose cp ์ต์ ์ด ๋ ์ด์ ํ์ํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๊ฐ๋ฐ์ ์ํด bind ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ์ธ๋ ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ฌด ๊ณ ํต ์ค๋ฝ์ง๋ง ์ง๊ธ ๋น์ฅ์. Linux๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ ๋จธ์ ์ผ๋ก ์ ํ ํ ์ ์์ต๋๋ค. ๋ด Mac์ ๋ฐ์ดํธ ๋ง ๋ฐ์ํฉ๋๋ค.
ํํ
์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ docker๋ฅผ ์คํํ์ง ์๊ณ ๊ฐ๋ฐ ๋ชฉ์ ์ผ๋ก ๋ง ์ฌ์ฉํฉ๋๋ค. ๋ณผ๋ฅจ ์ฌ์ฉ์ ๋ฌธ์ (์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ ๊ฒฝ์ฐ)๋ ์๋ฎฌ๋ ์ดํฐ (ํ์ฌ)์ ์์์ ํ์ผ์ ์ญ์ ํ๋์ด ์์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ญ์ ์ ์คํจํ๋ฉด ์คํฌ๋ฆฝํธ ์คํ์ด ์ค์ง๋๋ฏ๋ก rw๋ก ๋ง์ดํธํด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ผ ์ญ์ ๊ฐ ํ์ฉ๋๋ฉด ์๋ณธ์ด ์ญ์ ๋์ง ์๋๋ก ์ด๋ฌํ ํ์ผ์ ์ ๊ณตํ๊ธฐ์ํ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ docker-compose ์์ ์ปดํฌ์ง์ ์ ๋์ด๊ธฐ ์ํด ์ผ์ข ์ ์ธ๋ถ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํฉ๋๋ค.
ํ .. ์๋ฎฌ๋ ์ดํฐ ๊ณต๊ธ ์ ์ฒด์ ๋ฌธ์ ํ ์ ์๋ค๋ฉด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ํ์ผ์ ์ด๋ํ๋ ์๋ฎฌ๋ ์ดํฐ์ ์ง์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ง์ ๋ถํด์ง ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์.
๋ผ์ด๋ธ๋ฌ๋ฆฌ / ๊ตฌ์ฑ์ ํ ์์น์๋ง ์ ์งํ๊ณ ์ฃผ๋ณ์ ๋ณต์ฌํ๋ ๋ฐ ๋์์ด๋์์ง๋ง ์ง๊ธ์ ์ด๋์ ๋๋
.dockerignore
์ด ๋ฌด์๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋ก์ดDOCKER_BUILDKIT
์ต์ ๊ณผ ํจ๊ป Docker๋ฅผ ์ฌ์ฉํ ๋ ์๋ํ์ง๋ง docker-compose๋ฅผ ์ฌ์ฉํ ๋๋ ์๋ํ์ง ์๊ณCOMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build
์๋ํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค. ์ด๋ค ์์ด๋์ด?
๊ธฐ์ ๋ค๋จ๊ณ ๋น๋๊ฐ ๋์์ด๋์์ต๋๋ค! ์ด๋ค ๋ฒ์ ์ Docker ๋ฐ docker-compose๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ๋๋ ์ต์ ๋ฒ์ ์ผ๋ก ์๋ํ๊ณ ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์๋์ง ํ์ธํฉ๋๋ค. .dockerignore ํ์ผ์ ์กด์คํด์ผํฉ๋๋ค.
@Marandil , docker build
๊ฐ ๋ฌธ์ ์ธ ํ๋ก์ ํธ ๊ตฌ์กฐ (์ : ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ)๋ฅผ ์ฒ๋ฆฌํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. docker buildx bake
(https://github.com/docker/buildx)์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ฌ์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. buildx๊ฐ ์์
์ค์ด๋ฏ๋ก ์์ง ๋งค์ฐ ์์ ์ ์ด์ง๋ ์์ง๋ง ํ๊ฒฉ์ ์
์ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋กํฉ๋๋ค.
@itscaro , ์
๋ ฅ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ์ปจํ
์ด๋์์ ๋ฌด์ธ๊ฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ด๋ถ์ ์ผ๋กํ๋ ์ผ์ docker build
๋ฅผ ์ฌ์ฉํ์ฌ FROM scratch
์ด๋ฏธ์ง์์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ๋จ์ผ ์ปจํ
์ด๋์ ์ถ๋ ฅ์ด ํ์ํ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค.
@TrentonAdams ์ฐ๋ฆฌ๋ Docker Desktop์ ํ์ผ ์์คํ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํด ์์ง๋ง ๊น๋ค ๋กญ์ต๋๋ค. ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ VM ๊ฒฝ๊ณ๋ฅผ ํต๊ณผํ๋ ๊ฒ์ ๋๋ค. ํ์ผ ๊ณต์ ๋นํธ๊ฐ ์ต๊ทผ์ ๋ค์ ์์ฑ๋์์ผ๋ฉฐ (ํ๊ฒฝ ์ค์ ์์ "ํ์ผ ๊ณต์ ์ gRPC FUSE ์ฌ์ฉ"ํ ๊ธ์ ์ฌ์ฉํ์ฌ ์๋ก์ด ํ๊ฒฝ์ ํ์ฑํ ํ ์ ์์) ์ด๊ฒ์ ์ฌ๋๋ค์ด๋ณด๊ณ ์๋ ๋์ CPU ์ฌ์ฉ๋ ๋ฌธ์ ์ค ์ผ๋ถ๋ฅผ ํด๊ฒฐํ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ ์ ์ฌ๊ธฐ ์ ์ฑ๋ฅ ์กฐ์ ์ ๋ํ ๋ฌธ์๊ฐ
@ chris-crone
@Marandil ,
docker build
์ด ๋ฌธ์ ์ธ ํ๋ก์ ํธ ๊ตฌ์กฐ (์ : ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ)๋ฅผ ์ฒ๋ฆฌํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.docker buildx bake
(https://github.com/docker/buildx)์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ฌ์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. buildx๊ฐ ์์ ์ค์ด๋ฏ๋ก ์์ง ๋งค์ฐ ์์ ์ ์ด์ง๋ ์์ง๋ง ํ๊ฒฉ์ ์ ์ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋กํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค. docker buildx bake
์ดํด ๋ณด๊ฒ ์ต๋๋ค. ์ ๋ง ํด ๋ณด์ด์ง๋ง ์ด์ ๋ํ ์ข์ ์ฐธ์กฐ ๋ ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์์๊ณ docs.docker.com์ ํ์ด์ง๋ ๋ค์ ๋
ธ์ถ๋์ด ์์ง ์์ต๋๋ค (https://docs.docker.com/engine/reference/commandline/buildx_bake ์ฐธ์กฐ). /). ์ง๊ธ๊น์ง ๋ช ๊ฐ์ง ์์ ๋ฅผ ์ฐธ์กฐํ๋ https://twitter.com/tonistiigi/status/1290379204194758657์ ์ฐพ์์ต๋๋ค (https://github.com/tonistiigi/fsutil/blob/master/docker-bake.hcl, https : // github .com / tonistiigi / binfmt / blob / master / docker-bake.hcl), ์ข์ ์ถ๋ฐ์ ์ด ๋ ์ ์์ง๋ง ์ข์ ์ฐธ์กฐ๋ ์๋๋๋ค.
@TrentonAdams ์ฐ๋ฆฌ๋ Docker Desktop์ ํ์ผ ์์คํ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํด ์์ง๋ง ๊น๋ค ๋กญ์ต๋๋ค. ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ VM ๊ฒฝ๊ณ๋ฅผ ํต๊ณผํ๋ ๊ฒ์ ๋๋ค. ํ์ผ ๊ณต์ ๋นํธ๊ฐ ์ต๊ทผ์ ๋ค์ ์์ฑ๋์์ผ๋ฉฐ (ํ๊ฒฝ ์ค์ ์์ "ํ์ผ ๊ณต์ ์ gRPC FUSE ์ฌ์ฉ"ํ ๊ธ์ ์ฌ์ฉํ์ฌ ์๋ก์ด ํ๊ฒฝ์ ํ์ฑํ ํ ์ ์์) ์ด๊ฒ์ ์ฌ๋๋ค์ด๋ณด๊ณ ์๋ ๋์ CPU ์ฌ์ฉ๋ ๋ฌธ์ ์ค ์ผ๋ถ๋ฅผ ํด๊ฒฐํ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ์ฌ๊ธฐ์ ์ฑ๋ฅ ์กฐ์ ์ ๋ํ ๋ฌธ์๊ฐ ์์ต๋๋ค.
@ chris-crone ์ง์ฅ ์, ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ์๋ก์ด ์ต์ ์ผ๋ก 3 ~ 4 ์ด์ ๊ฐ์ ์ด ์์ผ๋ฉฐ "์บ์ ๋จ"์ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋ ์ธ๋ถ์์ ์คํํ๋ ๊ฒ๊ณผ ๋์ผํ ์ฑ๋ฅ์ ์ป์ ์ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ์ ์๊ฒ ์์ฒญ๋ฉ๋๋ค. ๋๋ ์ฐ๋ฆฌ ์ฑ์ ์์ ์๊ฐ์ด 2800ms๋งํผ ๋ฎ์์ ๋ ์ด์ 11-18 ์ด๊ฐ ์๋๋๋ค. ์! ์บ์ ๋ ๊ฒ ์ธ์๋ ๋ค๋ฅธ ๊ฒ์ด ํ์ํ์ง ์์ต๋๋ค. ์ด์จ๋ ๋งค๋ฒ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
@ chris-crone MacOS์์ ์ฑ๋ฅ ์กฐ์ ๋ฐ ํผ๋๋ฐฑ์ ์ง์ํ๊ธฐ ์ํด ์ฑ๋ฅ ๊ด๋ จ ์๋ฃ๋ฅผ ๊ฒ์ํด์ผํ๋ ์ฅ์๊ฐ ์์ต๋๊น? ๋ฐ์ธ๋ ๋ง์ดํธ๋ก ์๋ก ์์๋ ์ปจํ
์ด๋๊ฐ cached
์ฌ์ฉํ์ง ์์ ๋ ์ ๋๋ฆฐ ์ง ๊ถ๊ธํฉ๋๋ค. ๋๊ธฐํ ์ํ ์ธ ๊ฒฝ์ฐ ์์์ ๋ชจ๋ ํ์ผ์ ํ์ธํ๋ ์ด์ํ ์ผ์ด์์ ๊ฒ์
๋๋ค. ์ฌ์ง์ด ์ ํ์ผ ์ผ ๋๋ ๋ง์ฐฌ๊ฐ์ง์
๋๊น?
์ฌ์ฉ ์ฌ๋ก : ์ปจํ
์ด๋๋ฅผ ์คํํ๊ณ ํ์ผ์ ์์ ํฉ๋๋ค (ํนํ Keycloak์ ํ๊ฒฝ ๋ณ์ ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ ํ์ผ์ ์์ ํฉ๋๋ค). ์์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ณ ์ปจํ
์ด๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๋ฉด์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์งํ ์ํฉ์ ์ถ์ ํ ์ ์๋๋ก ๋ก์ปฌ ๋์คํฌ์ ํด๋น ํ์ผ์ ์ฌ๋ณธ์ด ํ์ํฉ๋๋ค. ํ์ฌ๋ docker cp
์ฌ์ฉํ ์ ์๋๋ก ๋งค๋ฒ ์ ์ปจํ
์ด๋ ID๋ฅผ ์ฐพ์์ผํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก :
๋์ปค์์ ๊ฐ๋ฐ.
๋ด ์ ๊ธ ํ์ผ์ ํธ์คํธ ์ปดํจํฐ๋ก ๋ค์ ์ ํํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปจํ
์ด๋๊ฐ ํ๋ก์ ํธ ํด๋๋ฅผ ๋ง์ดํธ ํ ๋ ๋ฎ์ด ์ฐ๊ฒ๋ฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก : ๋น๋ฐ ํค๊ฐ ํฌํจ ๋ ํ์ผ์ ๋ณต์ฌํด์ผํฉ๋๋ค. ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ ์ฑ์ ํด๋น ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ๊ณ ๋์คํฌ์์ ์ญ์ ํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก : ๋์ปค ์ปจํ ์ด๋์์ C ++ ๋จ์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ์คํํ ๋๋ง๋ค ๊ธฐ์กด ์ด๋ฏธ์ง์ ์ฝ๋๋ฅผ ๋ณต์ฌํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
1) ๋ณ๋์ dockerfile COPY
๋ก์ด ์์
์ ์ํํ๋ฉด ์ฝ๋๊ฐ ์๋กญ๊ณ ๋ถํ์ํ ์ด๋ฏธ์ง์ ๊ธฐ๋ก๋๋ฉฐ ๋ค์ ์คํ์์ ์ต์ ์ฝ๋๋ก ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋๋ก ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ญ์ ํด์ผํฉ๋๋ค.
2) docker-compose volumes
yaml config ๋ก์ด ์์
์ ์ํํ๋ฉด Docker๊ฐ ์์ค ์ฝ๋ ๋ฅผ root:root
(๋ด IDE๊ฐ ๋ค์ ์ชผ๊ฐ ์ง ๋๊น์ง ํธ์งํ์ง ๋ชปํ๋๋ก ์์ ํ ์ฃฝ์
๋๋ค!)
@ shin- ์ปจํ ์ด๋์์ ๋จ์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ํฐ ํจํด์ ๋ฐ๋ฅด๊ณ ์์ต๋๊น? ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋ ๋น-๋ฐ ํจํด ๋ฐฉ์์ ๋ฌด์์ ๋๊น?
.... ๋๋ ๊ฐ์ฅ ๊ณ ํต์ค๋ฝ์ง ์๊ธฐ ๋๋ฌธ์ 1 ๋ฒ์ ๊ณ ์ํ๊ณ ์๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ณต์ฌ ๊ตฌ์ฑ์ ์ง์ํ๋ docker-compose๊ฐ ์ ๋ง ๋ฉ์ง ํฅ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค! ์ ์ด๋์ด ์ํฌ ํ๋ก์ฐ์๋!
@soulseekah ์์ฑ์ ๋น๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋๊ฐ์?
์ ์๊ฒ ์ ํฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
COPY a_filename .
docker build -t myproject:1.0 .
version: "3.7"
services:
app:
image: myproject:1.0
ports:
- 3000:3000
networks:
- mynetwork
- internal
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: not_so_secret_password # don't do this
# https://diogomonica.com/2017/03/27/why-you-shouldnt-use-env-variables-for-secret-data/
MYSQL_DB: appdb
deploy:
resources:
limits:
cpus: '0.75'
memory: 100M
์๋ฒฝํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋์ง๋ง ๋ด ์ฌ์ฉ ์ฌ๋ก์์ ์๋ํฉ๋๋ค.
@soulseekah ์์ฑ์ ๋น๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋๊ฐ์?
๋ถํํ๋ ๋ด๊ฐ ๋ง์ง๋ง์ผ๋ก ์๋ํ์ ๋ ๋ผ๊ฐ ํ์ํฉ๋๋ค.
@soulseekah ์์ฑ์ ๋น๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋๊ฐ์?
๋ถํํ๋ ๋ด๊ฐ ๋ง์ง๋ง์ผ๋ก ์๋ํ์ ๋ ๋ผ๊ฐ ํ์ํฉ๋๋ค.
@soulseekah ์ด์ฉ๋ฉด ๋ด๊ฐ ์ฌ์ฉํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
@ChristophorusReyhan ๊ทธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌธ์ ๋ @zoombinis ์ฃผ์์ ํ์๋ฉ๋๋ค.
๋ณ๋์ dockerfile COPY๋ก์ด ์์ ์ ์ํํ๋ฉด ์ฝ๋๊ฐ ์๋กญ๊ณ ๋ถํ์ํ ์ด๋ฏธ์ง์ ๊ธฐ๋ก๋๋ฉฐ ๋ค์ ์คํ์์ ์ต์ ์ฝ๋๋ก ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋๋ก ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ญ์ ํด์ผํฉ๋๋ค.
์๋ํ๋ ์๋ฃจ์ ์ด์ง๋ง ์์น ์๋ ์ ์ง ๊ด๋ฆฌ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์น ์๋ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฆฌํ๋ ค๋ฉด _ ๊ด์ฌ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์กดํ๋ฉด์ _ :
docker-compose up && docker-compose down --rmi local
ํ์ง๋ง ๊ด์ฌ์๋ ๋ชจ๋ ์ด๋ฏธ์ง ์ ๋ง์ถค ํ๊ทธ๊ฐ ์๊ณ ํ ์คํธ / ๋๋ฏธ ์ด๋ฏธ์ง์๋
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
_ ์ด๋ค ๊ฒฝ์ฐ์๋ _ ๊ฒฐ๊ตญ _ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ ํจํด์ด๋ผ๊ณ ๋ ๋จ์ ์ผ๋ก ์ฃผ์ฅํ๋ ์ฉ๋๋ ๋ฌด์์ ๋๊น? ์ถ๊ฐ ํด๋์ ํ์ผ์ ๋ง๋ ๋ค์ ์ถ๊ฐ ํ ํ์ผ์ ์ด๋ํ๋ ๋์ ๊ธฐ์กด ํ์ผ์ ํ ์ค์ ์ถ๊ฐ ํ ์ ์์ผ๋ฏ๋ก ํ์คํ ์ ์ฉํฉ๋๋ค. ์ด ๋ฌด์๋ฏธํ๊ณ ๊ด๋ฃ์ ์ธ ์์ ํ์ผ ์์ฑ์ ์ง์ ํ ๋ฐ ํจํด์ผ๋ก, ์ฌ์ฉ์๊ฐ ๋์ปค ์์ฑ ํ์ผ์ ๊ฐ๋จํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ง ๋ชปํ๊ฒํฉ๋๋ค.
์ฌ์ฉ์๊ฐ Docker๋ก ์ ํดํ ์ผ์ํ๊ณ ์ถ๋ค๋ฉด, ๋น์ ์ด ๋ฌด์์ํ๋ ์๊ด์์ด ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒ์ ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ธ์ ๊ฐ ์ค์ฉ ํ ์ ์๋ค๋ ์ด์ ๋ง์ผ๋ก ํฉ๋ฒ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฑฐ๋ถํ๋ ๊ฒ์ ์ด๋ฆฌ์์ ์ผ์ ๋๋ค.