์ฌ์ฉ์๋ docker-compose up
๋ฅผ ์คํํ ๋ ์คํํ๊ณ ์ถ์ง ์์ Compose ํ์ผ์ ์ ์ง ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ, ํ
์คํธ ์ค์ํธ, ๋๋ฒ๊น
์์คํ
์ ์ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์๋๋ ์๋น์ค๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ด์ผํ์ง๋ง docker-compose up servicename
๋๋ docker-compose run servicename ...
๋ฅผ ์ํํ์ฌ ์๋์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
1) ์ฌ์ฉ์์๊ฒ ๋ณ๋์ Compose ํ์ผ ์ฌ์ฉ ๊ถ์ฅ
2) ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋๋ก ์๋น์ค์ ์ต์
์ถ๊ฐ
3) ๊ธฐ๋ณธ ์๋น์ค ์ ์๋ฅผ์ํ ์ต์์ ๊ตฌ์ฑ ์ต์
์ถ๊ฐ
4) ์๋น์ค์ ๊ฐ์ ๊ฐ๋
์ ์ถ๊ฐํ๋ ์ผํ์ฑ ๋ช
๋ น ( "์คํฌ๋ฆฝํธ", "์์
"๋ฑ)์์ํ ๊ฒ์
๋๋ค.
(์์ด๋์ด๊ฐ ์์ผ๋ฉด ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ ์ํ์ญ์์ค.)
compose up
w / o -d
"compose up
์ข
๋ฃํ์ง ์์ผ๋ฏ๋ก์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.์ต์ 1์ ๊ฒฝ์ฐ +1
์ค์ ๋ก ์ปดํฌ์ง์ ์ ์ผ๋ถ๊ฐ ์๋์ง๋ง ์ฐ๊ฒฐ / ์ฒจ๋ถํด์ผํ๋ ์๋น์ค๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ชป๋ ๋์์ธ ์ ํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค ํํ์ include ๊ตฌ๋ฌธ์ ํ์ฉํ์ฌ ํด๊ฒฐํ ์์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๋จ์ผ ๊ธฐ๋ฅ์ผ๋ก ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ํญ์ ์ข์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ์ค ์ผ๋ถ (๋ฐ์ดํฐ ์ ์ฉ ์ปจํ ์ด๋๋ฅผ ๋ค๋ฃจ๋ ๋ฌธ์ , # 942, @ cpuguy83์ ๋ง์ง๋ง ์ฃผ์)๋ ์ค์ ๋ก # 1754์ ์ํด ์ด๋ฏธ ์์ ๋์์ผ๋ฏ๋ก ๋ ์ด์ ๋ฌธ์ ๋ก ๊ฐ์ฃผ ํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค (1.5 ์ดํ ).
์ฐ๋ฆฌ๋ Magento ํ์ฅ์ ๊ฐ๋ฐํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ LAMP ์คํ์์ ์น ์คํ ์ด๋ฅผ ์คํํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. Compose๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๋ํ phpunit, ๋ค์ํ ์ ์ ๋ถ์ ๋๊ตฌ, ๋ฌธ์ ์์ฑ๊ธฐ ๋ฑ์ ์คํํ๋ ค๊ณ ํฉ๋๋ค. ์ฌ์ค ๋๋ถ๋ถ์ "์๋น์ค"๋ docker-compose run --rm phplint
์ ๊ฐ์ ๋ช
๋ น ์ผ๋ฟ์
๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์ ๋์ง ์์ ๋ช
๋ น
docker-compose up -d
์ฅ๊ธฐ ์คํ ์๋น์ค (์ค์ _services_ ๊ทธ๋๋ก) ๋ง ์์ํ๊ณ phpunit๊ณผ ๊ฐ์ ๋ค๋ฅธ ํจ๊ณผ๋ฅผ ๋ถํ์ํ๊ฒ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค. (์น ์๋น์ค๊ฐ ์์๋๊ธฐ ์ ์ Selenium ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์์๊ฐ ์๋ชป๋ ๊ฒ์ ํธ๋ฆฌ๊ฑฐํ์ง ์๋ ๊ฒ๋ ์ค์ํฉ๋๋ค.)
์ฐ๋ฆฌ๊ฐ ์ ๋ง๋กํ๋ ค๋ ๊ฒ์ ํ๋ก๋์ ์๋น์ค๋ฅผ ์คํํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๋ฐ์๋ก๋ถํฐ ํ๊ฒฝ ๊ด๋ฆฌ์ ๊ณ ํต์ ์์ ๋ ๊ฒ์ ๋๋ค. @dnephin ์ ์๊ฒฌ์ด Compose๊ฐ ํฅํ๊ณ ์๋ ๋ฐฉํฅ์ ๋ํํ๋์ง ์ฌ๋ถ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง Compose๊ฐ Fig๊ฐ ์์๋ ํ์ ์์ฅ์ ์๋น์ค๋ฅผ ์ ๊ณต ํ ๊ณํ์ธ์ง ์ฌ๋ถ๋ ์ ์๊ฒ ๋ชจํธํด ๋ณด์ ๋๋ค. ์ต์ 1์ ๊ฐ๋ฐ์๊ฐ Fig๊ฐ ์๋ ํ๋๋ก ์ด๊ฒ์ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ์ฌ์ฉ ํธ์์ฑ์ ์ง์ํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.) Compose๊ฐ ์ฌ๋ฌ ์ฑ ์์ ๊ฐ๊ณ ์ถ์ง ์์์ง ์์ ํ ์ดํดํ์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ๋ช ํํ๊ฒ ์๋ ค์ค ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋น ๋ฅด๊ณ ๊ณ ๋ฆฝ ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํด์ด ์ ํ์ ์ฌ์ฉํ๋ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ ์ผํ๋ค๋ฉด.
@kojiromike , (1) ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ์ง ์์ ๊ฒ์ ๋ฌด์์
๋๊น? ๋ช
๋ น ์๋ฏธ๋ก ( docker-compose run --rm phplint
๋ docker-compose --file phplint.yml up
)์ ๊ดํ ๊ฒ์
๋๊น?
docker-compose up -d
๋ phplint๋ฅผ '์์'ํ๋ ค๊ณ ํ๊ณ docker-compose ps
๋ phplint 'service'๊ฐ ๋ค์ด๋์์์๋ณด๊ณ ํฉ๋๋ค. ์ค์ ๋ก๋ ์๋น์ค ์ปจํ
์ด๋๊ฐ ์๋๋ผ ๋๊ตฌ ์ปจํ
์ด๋์ด๋ฏ๋ก ์
/ ๋ค์ด ๊ฐ๋
์ด ์์ด์ผํฉ๋๋ค. ๋๊ตฌ ์ปจํ
์ด๋๊ฐ ๋์ปค (๋ถ๋ช
ํ '์๋น์ค'๊ฐ ์๋ redis-cli์ ๊ฐ์ ๊ฒ์ ์คํํ๋ ๋ฐฉ๋ฒ)์ ์ํด ์์ฉ๋๋ค๋ ๊ฒ์ด ์ ์ดํด ์๊ณ , ๊ฐ๋ฐ์ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋์์๋ ํ๋ก๋์
์์ํ ์ฅ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. awk
๊ฐ ํ๋ก๋์
๋จธ์ ์ด๋ ์ปจํ
์ด๋์ ์ค์น๋์ด์๋ ์ด์ ์ ๊ฐ์ด ์ฐ๊ฒฐ์ด์๋ ์ปจํ
์ด๋๋ฅผ ํตํด ์คํํ์ฌ ์์ธก ๊ฐ๋ฅํ ๋์์ ๊ฐ์ ธ ์ค๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
: +1 : ์คํ์ค์ธ ๋จ์ ํ
์คํธ๋ฅผ ์บก์ํํ๊ธฐ ์ํด ๋ค๋ฅธ ์๋น์ค์ ํจ๊ป tests
์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๋ด "ํด๊ฒฐ ๋ฐฉ๋ฒ"์ ๋ช
๋ น์ "/ bin / true"๋ก ์ค์ ํ๊ณ CLI์ ์ง์ ๋ ๋จ์ ํ
์คํธ ๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ๊ฒ์
๋๋ค. up
์๊ฐ์ ์์ํ ์ปจํ
์ด๋๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค!
(btw, ์ฃผ์์ ์ข์ ์ผ, ์ฌ๋ฌ๋ถ)
cc @jameydeorio
@ryneeverett ์๋ฏธ๋ก ์ ๊ทธ๊ฒ์ ์ผ๋ถ์
๋๋ค. ์์ฒด ๋ฌธ์ํ ๋ฐ ๊ฒ์ ๊ฐ๋ฅ์ฑ์ ๋ฌธ์ ์
๋๋ค. ํ์ฌ ๊ฐ๋ฐ์์๊ฒ docker-compose run --rm foo bar
๋ผ๊ณ ์๋ ค์ค๋๋ค. ์ ํจ์ ๋ ๋ณ์นญ์ ๋ง๋ค๋๋ก ์ด๋ํ์ง๋ง ํ๋ก์ ํธ์ ๋ํ ํ์ค ๋ณ์นญ / rcfile์ ์ ์งํ์ง ์์ต๋๋ค. (์ปจํ
์ด๋ ์ธ๋ถ์ ํญ๋ชฉ์ ํ์คํํ๊ณ ์ถ์ง ์์ต๋๋ค. Docker _to_ standardize๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.) ์ผ๋ถ ๋ช
๋ น์ ๋ํด ์ ํ์ผ์ ์ถ๊ฐํ๋ฉด ์ค์ํ ๊ณ์ธต์ด ์์ฑ๋ฉ๋๋ค. docker-compose.yml ํ์ผ์ ์ค์ํ ๊ฒฝ์ฐ "๊ธฐ๋ณธ"ํ์ผ์ด๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ "๊ธฐํ"ํ์ผ์ ๋ ์ค์ํด์ง๋๋ค.
๋ค๋ฅธ ํ๋๋ ์๋น์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ๋ ํ๋ค์ด์ง๋ค๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์๋ ํญ๋ชฉ์ด ์๋ค๊ณ ํด์ ์ฅ๊ธฐ ์คํ ์๋น์ค์์ link
๋๋ volume
๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. extends
์ ์ค์ ๋ก ์๋น์ค๋ฅผ "๋ช
๋ น"(์ผํ์ฑ ์๋น์ค)์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ทธ๋ ๊ฒํ๋๋ผ๋ ์ฌ๋ฌ ๊ฐ์ yaml ํ์ผ์ ์ฌ์ฉํด์ผํ๋ค๋ฉด extends
๋ฅผ ์ฌ์ฉํด์ผํ๋๋ฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ํ์ง ์์ ๊ฒ์
๋๋ค.
extends๋ ์๋น์ค๋ฅผ "๋ช ๋ น"(์ผํ์ฑ ์๋น์ค)์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ค์ ๋ก ์ ๊ณตํ์ง๋ ์์ต๋๋ค. ๊ทธ๋ ๋๋ผ๋ ์ฌ๋ฌ yaml ํ์ผ์ ์ฌ์ฉํด์ผํ๋ค๋ฉด ํ์ํ์ง ์์ ํ์ฅ์ ์ฌ์ฉํด์ผํฉ๋๋ค.
@kojiromike ๋ด๊ฐ ์์ฌํ๋ ๊ฒ์
๋๋ค. ๊ฐ์ ๋ extends
์ง์ + ๋จ์ผ docker-compose.yml
๋ด์์ ํ์ ๋ช
๋ น ( extends
๊ณผ ๊ธฐ๋ฅ์ ์ผ๋ก ๋์ผ ํจ)์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ง์กฑํ๋์ง ๊ถ๊ธํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ง๋ ํ์๋ (4)์ ๋์ผํฉ๋๋ค.
2) ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋๋ก ์๋น์ค์ ์ต์ ์ถ๊ฐ
๋๋ ์ต์
2์ ํฌํํ๋ค. ์๋ฅผ ๋ค์ด start: false
์ง์์ด์ ๊ฐ์ ๊ฒ. ์ฅ์ ์ ์ฌ๋ฌ compose.yml ํ์ผ์ด๋ ์ถ๊ฐ ๊ตฌ์ฑ ํ์ผ์ด ํ์ํ์ง ์๋ค๋ ๊ฒ์
๋๋ค. ํ๋์ compose.yml ๋ง ์ฝ์ผ๋ฉด ์ ์ฒด ์ฑ ์คํ์ ๋๋์ ์ป์ ์ ์์ต๋๋ค.
https://github.com/docker/compose/issues/1987#issuecomment -139632238์ ๋ํด ์ ์ ๋ ์๋ฃจ์
์ด์ด๋ฅผ ์ฒ๋ฆฌ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. "admin"์๋น์ค๋ ๋ณ๋์ ๊ตฌ์ฑ์ผ๋ก ์ ์ ํ ์ ์์ผ๋ฉฐ ๊ตฌ์ฑ์ ๋ํด ๊ด๋ฆฌ์ ๋ช
๋ น์ ์คํํด์ผํ๋ ๊ฒฝ์ฐ -f
ํ ์ ์์ต๋๋ค.
@dnephin # 1987 (comment) ์ ์๋ฃจ์
์ _does_ "admin services"๋ฅผ ์ฒ๋ฆฌํ์ง๋ง "data only container"๋ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค _ ๋ง์ต๋๊น? ์ฌ์ ํ command: /bin/true
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํฉ๋๋ค.
compose๊ฐ ๋ณผ๋ฅจ์ ๋ค์ ์์ฑ ๋ ์ปจํ ์ด๋๋ก ๊ต์ฒดํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ฏ๋ก compose๊ฐ์๋ ๋ฐ์ดํฐ ์ ์ฉ ์ปจํ ์ด๋๊ฐ ํ์ํ์ง ์์ต๋๋ค.
@ cpuguy83 ๋ค์ ์์ ์์๋ ๋ฐ์ดํฐ ์ปจํ ์ด๋๊ฐ ์ค์ ๋ก ํ์ํ์ง ์์ง๋ง ๋ณผ๋ฅจ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ง์ ๋ ํ
nginx:
image: nginx:1.9
volumes_from:
- data
php:
image: php:5.6-fpm
volumes_from:
- data
data:
image: debian:jessie
volumes:
- ./:/app
๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ด ์ฝ๋ ์ผ์ด์ค์ด๋ฉฐ ์ถ๊ฐ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ง๋ ๊ฐ์น๊ฐ ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์ ์ ๋ ์๋ฃจ์ ์ด์ด ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ์ค, ๋ฐ์ดํฐ ๋ณผ๋ฅจ์๋ ์ฌ์ ํ ์ผ๋ถ ๋ช ๋ น์ด ํ์ํ๋ฏ๋ก ํด๋น ๋ช ๋ น์ ์ง์ํ๋ ค๋ฉด ์ต์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
์์ผ๋ก ๋์ฌ ์ ๋ณผ๋ฅจ API์ ๋ํด ์์ ํ ์ต์ ์ํ๋ ์๋์ง๋ง ๋ ๋์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ์ฒ๋ฆฌ ํ ์ โโ์๋๋ก volumes:
์น์
์ ์ถ๊ฐํ์ฌ ๊ตฌ์ฑ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. (๊ทธ๋ค์ ์ํด ์ปจํ
์ด๋๋ฅผ ์๊ตฌํ๋ ๋์ ).
์ด๊ฒ์ด ๋ฐ๋์ ์ฌ๋ฐ๋ฅธ ์ ํ์ด๋๋ ๊ฒ์ ์๋์ง๋ง ํ์ต ๊ณก์ / ์ดํด์ ์ฉ์ด์ฑ์ ๊ณ ๋ คํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ (2)๊ฐ ์ดํดํ๊ธฐ ๊ฐ์ฅ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ํ์ธํ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ๋ด ์ง๊ฐ์ ๋ฐ๋ฅด๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ์ ์ง๋ฉดํ๋ docker-compose
์ ๋ชจ๋ ์ต์
์ ๋ํด ์น๋ฐํ์ง ์์ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค. " docker-compose up
์คํํ ๋ ํด๋น ์ปจํ
์ด๋๋ฅผ _ ์์ํ์ง ์์ _ ์ํ๋ก ๋ง๋ค ์์๋ ๋ฐฉ๋ฒ์ด ์์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค."๊ทธ๋ฆฌ๊ณ start: false
๋ฐ bam์ด ํ์๋ฉ๋๋ค. ์๋ฃ๋๊ณ ํ๋ณตํฉ๋๋ค.
๊ทธ๋ค์ "์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด์ํ ๋งํฌ ์คํ ๋ฆฌ๊ฐ์๋ ๋ ๋ฒ์งธ ํ์ผ์ ๋ง๋ค ์์๋ ๋ฐฉ๋ฒ์ด ์์๋ค๋ฉด ..."์ด๋ผ๊ณ ๋งํ์ง ์์ต๋๋ค. (https://github.com/docker/compose/issues/ 1987 # issuecomment-139632238์ "์ด์ํ ์ฐ๊ฒฐ ์ด์ผ๊ธฐ"๋ฅผ ๋์์ค๋๋ค.
(4)๋ ๋ค์ ๋ชจํธํ์ง๋ง, ์ด์ ๊ฐ์ ๋๋ณธ๊ณผ ์ผํ์ฑ์ ๋ํ ์ ์ฉ ๋ฐฉ๋ฒ์ด์ด "์ด์น์ ๋ง๋"๋ฒ์์ ๋ถํฉํฉ๋๋ค.
์ค๋ ์ ๋ ์ ํํ (2)
์ฐพ๊ณ ์์์ง๋ง ๊ฐ์ฅ ์ ํธํ์ง ์๋ ์๋ฃจ์
์ธ ๋ ๋ฒ์งธ YML ํ์ผ๋ก ๋๋ฌ์ต๋๋ค. ๋ด ์ฌ์ฉ ์ฌ๋ก :
๋ ๊ฐ์ ์ปจํ
์ด๋๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ๋์ผํ mongo
์ปจํ
์ด๋์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ ๋ ์ ์์ ๊ณผ ํ์๊ฒ mongo ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ณ ์ ๋ฌผ์๋ก๋ ํ ์์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค.์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ mongo
์ปจํ
์ด๋๋ฅผ ๋ค๋ฅธ ์ด๋ฆ fixtures
ํ๋ ๊ฒ์
๋๋ค. mongo์ ์ฐ๊ฒฐ ํ ๋ค์ mongorestore --host mongo --port 27017 --drop /dump
ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํญ์ ์กฐ๋ช
๊ธฐ๋ฅผ๋ก๋ํ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ start: false
์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ์์ฐ์ค๋ฝ๊ฒ ๋๊ปด์ก์ง๋ง fixtures
๋ฐ mongo
์ปจํ
์ด๋์ ๋ํด ๋ณ๋์ YML ํ์ผ์ ๊ฐ๊ฒ๋์์ต๋๋ค.
์ ์๋ํ์ง๋ง start: false
๋ ํจ์ฌ ๋ ๊นจ๋ํ IMO์
๋๋ค. ์ด ์์ ํฝ์ค์ฒ ์ปจํ
์ด๋์ ์์ด์ด 10 ๊ฐ ์ด์์ด๋ฉด ์ start: false
๋ ๋์ ์๊ฐ์ด๊ณ (1)
ํฉ๋๋ค.
docker-compose up -d
๋ช
๋ น์ผ๋ก ์ผ๋ถ ์๋น์ค๋ฅผ ์คํํ์ง ์์์ผํ๋ compose ํ์ผ์ ๋ง๋ค๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค. ๋์๊ฒ๋ ์ต์
(2)๊ฐ ๋ด ๋ฌธ์ ์ ๋ํ ์ต์์ ์๋ฃจ์
์ด ๋ ๊ฒ์
๋๋ค.
๋๋ ์ด๊ฒ๋ ๋ง๋ฌ๋ค. ์ด๋ค ๊ฒ์ด ์ต์ ์ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ ์๊ฒ๋ ๊ตฌ๋์ ์ผ๋ถ๋ก ํ์ฉ๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถ ํ ์์๋ ๋ฅ๋ ฅ์ด ํ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์์ ์ปจํ ์ด๋ ์ฉ์ด์ง๋ง ํ์ํ ๋ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋๋ก ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ๋์ด ์์ด์ผํฉ๋๋ค.
์๋ ํ์ธ์! ์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ , ์ข์ ๊ทธ๋ฃนํ ๋ฌธ์ ๊ฐ์์ด ๋คํ์ ๋๋ค.
์ ๊ฒฝ์ฐ์๋ ์๋น์ค๊ฐ์๋ ๋ ๊ฐ์ ์ปจํ ์ด๋์ ํจ๊ป ์๋ํ๋ ํ์ด์ฌ ์คํ์ด ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ์ง๋ง ๋ฐฉ๊ธ ์คํ์์ ์ผ์ด์ค๋ฅผ ์ฐพ์์ต๋๋ค. ์ ๋ bower๋ก ์ ์ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฉฐ ์ปจํ ์ด๋ ๋ด๋ถ์์ bower ๋ช ๋ น์ ์คํํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ ์ ์คํํ๋ ์คํฌ๋ฆฝํธ ์ผ๋ฟ์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ฑ ๊ตฌ์กฐ ๋ด์์์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ์ข์ ๊ฒ์
๋๋ค. ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ป์๋ค.
docker-compose run node bower install
๊ทธ๋์ ์ ๋ 4 ๋ฒ์งธ ์ค 2 ๋ฒ์งธ ์ต์ ์ ์ข์ํฉ๋๋ค. ์๋น์ค๊ฐ ์์๋์ง ์๊ณ ํ์ํ์ง ์์ต๋๋ค .P
ํฉ์๊ฐ ์๋ค๋ฉด "์ฌ์์"๊ณผ ๊ฐ์ ํ ์์ฒญ์ ๋ณด๋ด๋ ค๊ณ ํ ์ ์์ต๋๋ค.
์์ : ํญ์
์๋ง๋ ... ๋ชฐ๋ผ.
์ต์ 2์ ๋ํ ๋ ๋ค๋ฅธ ํฌํ.
์ต์ 2๋ ์ ํธํฉ๋๋ค. ์๋ก์ด Docker ๋ฐ์ดํฐ ์ปจํ ์ด๋๋ docker-compose ํ์ผ์ ์ง์ ํ ์ ์์ง๋ง ์ฌ์ฉํ๊ธฐ ์ํด ์คํ ์ค์ผ ํ์๋ ์์ต๋๋ค.
๋๋ ์ต์ 2
์ต์ 2๊ฐ ์ข์ ๊ฒ์ ๋๋ค.
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1. ์ฌ๋ฌ ํ์ผ์ ์ ์งํ๊ณ ์ด๋ฆ์ ์ ๋ ฅํ๋ ๊ฒ์ ์๊ฐ ๋ญ๋น ์ผ๋ฟ์ ๋๋ค. ํ๋์ ๋ถ์ธ ํ๋๊ทธ๊ฐ ๋ชจ๋๋ฅผ ์ง๋ฐฐํฉ๋๋ค. :๋งฅ์ฃผ:
์ต์
4์ ๊ฒฝ์ฐ +1,
๋ ๋ฒ์งธ๋ก ์ข์ํ๋ ๊ฒ์ ์ ํํด์ผํ๋ค๋ฉด ์ ํ 2์
๋๋ค.
๋ด๊ฐ ๋ ๋ค +1 ํ ์ ์๋ค๋ฉด ์ต์ ์ ์ ํ์ 2,4๋ผ๋ ์ฌ์ค์ ์ฌ์ค์ ๋๋ค.
2 ๋ช ํฌํ
2์ 4 ๋ชจ๋ ๊ฐ์ง๊ณ ์์ผ๋ฉด ์ข์ต๋๋ค.
2์ +1
์์ ์ ๋ํ ์๋ก์ด ๊ฐ๋ ์ ๋์ ํ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ๋ค์ ์ ์๊ฐ์ ์์ฃผ ์ ์ฝ๊ณ ๋ง์ ์์ ์์ด ๊ฐ๋ฅํฉ๋๋ค.
// 'task' being a service that manages all my tasks, probably with some custom entrypoint script
docker-compose run task tests
// 'tests' being a service specifically for testing with the default command set to run my tests
docker-compose run tests
๋ณ๋์ compose ํ์ผ์ด์๋ ํ์ฌ "์๋ฃจ์ "์ ์ ์๊ฐ์๋ ์ค์ ๋ก ์๋ฃจ์ ์ด ์๋๋๋ค. @xaka๊ฐ ๋งํ๋ฏ์ด ์๋ฌด๋์ด ๋ชจ๋ ๊ฒ์ ์ ๋ ฅํ๊ณ ์ถ์ง ์์ต๋๋ค.
docker-compose -f default-file.yml -f additional-tasks-file.yml run task myTask
๋น์ ์ด ๋ ๊ฒ๋๋ค ๊ฒ์์
๋๋ค ./run-task
์ ์ ๋ชจ๋ ์์ฉ๊ตฌ ์ถ๊ฐ ์คํฌ๋ฆฝํธ myTask
๋น์ ์ ์ํด. ๊ทธ๋ฌ๋ ์ด์ ๋ค์ค ์ปจํ
์ด๋ ์ฑ์ ๋ค๋ฅธ ์ง์
์ ๊ณผ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๊ฐ๋ฐ์๋ docker-compose.yml
๋ฅผ๋ณด๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํฉ๋๋ค. _ "์ข์์, ์์ฑ ์ฑ์
๋๋ค.์ด ์์
์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค!"_ ์ด์ ๊ทธ๋ค์๊ฒ ๋งํด์ผํฉ๋๋ค. _ "์ข์ต๋๋ค. docker-compose
๊ด๋ฆฌ ํ ์ โโ์์ต๋๋ค.
start: false
/ up: false
/ some-additional-flag-to-a-service: false
๋ ๊ตฌํํ๊ธฐ ๊ฐ์ฅ ๊ฐ๋จ ํ ์๋ ์์ง๋ง ๊ฐ์ฅ ๋ช
ํํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๊ฒ์ผ ์๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ฉ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ๊ฒ์
๋๋ค.
@sherter๊ฐ ๋งํ ๊ฒ. : arrow_up :
: +1 : ๊ทธ๊ฒ์ ์ํด. ๋ณ๋์ dockerfile์ ํนํ ๋คํธ์ํฌ๊ฐ ๊ด๋ จ๋ ๊ฒฝ์ฐ ํฐ ๊ณ ํต์ ๋๋ค.
start: true|false
์ ๊ทผ ๋ฐฉ์์ ๋๋ฌด ์ ํ์ ์
๋๋ค. ์ผ๋ถ ์๋น์ค๋ ํ
์คํธ์ ์ฌ์ฉ๋๊ณ ๋ค๋ฅธ ์ผ๋ถ๋ ๊ด๋ฆฌ์ ์ฉ์ผ๋ก, ๋๋จธ์ง๋ ์ ์ ์๋ ์ฉ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ๋ฉ๋๊น?
์๋น์ค์ ๊ทธ๋ฃนํ ๊ฐ๋ ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค.
myservice:
group: `admin`
group
์์ฑ์ด ์ ์๋์ง ์์ ๊ฒฝ์ฐ default
๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ด๋ ๊ฒํ๋ฉด docker-compose up -g admin -d
์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋ฐ ๊ด๋ฆฌ ์๋น์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค.
๋ ๋์ ๋ฐฉ๋ฒ์ groups
๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฃน ํด๋์ค์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง์ด ๋ฌธ์ ์ ์ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
docker-compose ๋ฒ์ 2 ์์ ๋ชจ๋ ์ปจํ
์ด๋๋ services:
์ต์์ ํญ๋ชฉ ๋ด์ ์ ์ธ๋ฉ๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ํด start: never
๋ก ์๋น์ค๋ฅผ ์ ์ธํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ ์๋ก์ด ํ์์ ๊ณ ๋ คํ ๋ _services_, _volumes_ ๋ฐ _networks_์ ๋ณ๋๋ก ์ถ๊ฐ ์ต์์ ํญ๋ชฉ์ ์ ์ธํด์ผํ์ง ์์ต๋๊น?
๋ด ์ ์ :
scripts:
, transients:
(๋๋ ๋ ๋์ ์ด๋ฆ์ ์๊ฐ ํด๋ณด์ธ์) ์ต์์ ํญ๋ชฉ์ v2์ ์ถ๊ฐํฉ๋๋ค.์:
version: "2"
services:
web:
image: myapp
networks:
- front
- back
volumes:
- /usr/src/app/
redis:
image: redis
volumes:
- redis-data:/var/lib/redis
networks:
- back
scripts:
bower:
image: my_image_with_bower
volumes_from: web
working_dir: /usr/src/app/static
command: "bower"
// maybe would be great to place something like "bower $@"
// to define where you want the cli arguments to be placed, by default at the end.
volumes:
redis-data:
driver: flocker
networks:
front:
driver: overlay
back:
driver: overlay
๊ทธ๋ฆฌ๊ณ ๋ค์์ ์คํํ ์ ์์ต๋๋ค.
docker-compose script bower <EXTRA_CMD_ARGUMENTS | default nothing>
docker-compose script bower install
์ฐ๋ ค ์ฌํญ :
๋ง์ง๋ง์ผ๋ก, _groups ๊ธฐ๋ฅ _์์ ๋ฉ์ง๊ฒ ๋ค๋ฆฌ์ง๋ง ๊ทธ ์ ๋์ ๊ทธ๋ฃนํ๊ฐ ์๋ค๋ฉด ๊ฐ๊ฐ์ ๋ํด docker-compose ํ์ผ์ ๋ง๋๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ง๋ ๋น์ ์ด ์ํ๋ ๊ธฐ๋ฅ์ docker-compose file inheritance ์ผ ๊ฒ์ ๋๋ค.
PD : @bfirsh ๊ฐ ๋ง์์ ๋ค๋ฉด "๊ฐ๋ฅํ ์ ์"์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ๋ก ์ด๊ฒ์ ์๋ฐํ ์๋ก์ด ํ์ ์ ์ธ ์๋น์ค๋ก ์ธํด ๋ค ๋ฒ์งธ ์ ์ ์ ๊ฐํธ์ ๋๋ค.
์ต์
2์ ๋ํ ํฌํ : ๊ฐ์ฅ ๋ช
ํํ๊ณ ์ฝ๊ธฐ ์ฌ์ฐ ๋ฉฐ ์๋ก์ด ๊ฐ๋
์ ๋ฐฐ์ธ ํ์๊ฐ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋ ์๋น์ค๋ฅผ ์ํฉ๋๋ค.
disabled: true
์ ๊ฐ์ ๊ฒ์ ์ด๋ป์ต๋๊น?
@ cpuguy83 run
์์๋ ์ ์ฒด ์๋น์ค๊ฐ ๋นํ์ฑํ ๋์์์ ์๋ฏธํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํผ๋ ์ค๋ฌ์ธ ๊ฒ์
๋๋ค.
@qcho ํ , ์ด์ 1.6๋ถํฐ Docker์ ์ต์ํด ์ก์ผ๋ฏ๋ก ๋น์ ๊ณผ @gittycat ์ ์ ๊ทผ ๋ฐฉ์์ ์ ๋ง ์ข์ํฉ๋๋ค. ๋๋ (ํธ๋ฅธ ํ๋) ์ธํฐํ์ด์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฌ์ฌํฉ๋๋ค.
groups: # if no groups, all services are in the "default" group byโฆdefault
- foo
- bar
services:
foo:
image: imagine
groups: foo
bar:
image: energy
groups: bar
baz:
image: money
# no groups, so "default"
quux:
image: word
groups:
- bar
- default
ํํธ ๊ป๋ฐ๊ธฐ์โฆ
docker-compose up -d # Up all services in default group, so 'baz' and quux
docker-compose up -d --groups foo # Up all services in the foo group
docker-compose up -d --groups foo,default # You get the idea
docker-compose run --rm bar somecommand # We never started 'bar', so it can be a one-off command
์ด์ ๊ฐ์ ์ ๊ทผ ๋ฐฉ์์ ๋๋จํ๊ณ ์ด ํฐ์ผ์ ํ์์ฑ์ ์์จ ์ ์์ง๋ง ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
@kojiromike ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์๋๋ค. ์ด๊ฒ์ด init ์์คํ ์ด ์๋์ผ๋ก ์์๋์ง ์์์ผํ๋ ์๋น์ค๋ฅผ ์ฐธ์กฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ํ ๊ฐ๋จํ๋ฉฐ ๋ชจ๋ "ํผ๋"์ ๋ฌธ์๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ํ ์๋น์ค ์์ ๊ฐ๋
๊ณผ๋ ์ ํ ๊ด๋ จ์ด์๋์ด ๊ทธ๋ฃนํ๋ณด๋ค ํจ์ฌ ๋ ํผ๋ ์ค๋ฝ์ต๋๋ค.
@ cpuguy83 ๋๋ "์๋น์ค"์ ์๋ฏธ๊ฐ ์ ํํ ์ฒ์์ ํผ๋์ค๋ฌ์ด ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๋ฃนํ๊ฐ ๋ฒ์ ํฌ๋ฆฝ์ด๋ผ๋ ๊ฒ์ ๋์ํฉ๋๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ ๋๋ "์๋น์ค"์ "์๋น์ค๊ฐ ์๋ ๊ฒ"์ ๋ช ํํ ๊ตฌ๋ถํ๋ ์ต์ 4 / @qcho ์ ์ ๊ทผ ๋ฐฉ์์ ์ ํธํฉ๋๋ค.
๊ทธ๊ฒ์ด ์์ ์ ๋๋ค. ์ ์๋น์ค๋ฅผ ์คํํ์ง ์์ ์ปจํ ์ด๋๋ฅผ "service ... disabled"๋ฒ์ฃผ์ ๋ฃ์ด์ผํฉ๋๋ค. ๋๊ตฐ๊ฐ ๋ง๋ ๋ชป์๊ธด ํจ์น์ฒ๋ผ ๋ค๋ฆฌ๋ฉฐ ์ง๊ด์ ์ด์ง ์์ต๋๋ค.
ํ์์ "๋ฒ์ 2"๊ฐ์ด ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค๋ฅธ ์ฌ์์
version: 3?
containers:
webserver:
...
database:
...
cache:
...
some_script_container:
services: (they are groups):
production:
webserver:
...
database:
...
cache:
...
development:
webserver:
... DEFINE SOME CUSTOM DEV STUFF ABOVE basic container definition
database:
...
cache:
...
์ด์ ๊ทธ๋ฃน ์ ์์ ํจ๊ป ์ ์ ํ ์๋น์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์์ฐ ๋๋ ๊ฐ๋ฐ ์๋น์ค ๊ทธ๋ฃน์ ์์ํ ์ ์์ต๋๋ค. ๋๋ some_script_container์์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ญ์์ค. ์ด๋ค ์๋น์ค์๋ ์ ์๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌด๋ ์์๋์ง ์์ต๋๋ค.
@qcho ๋ ์๋น์ค์ ์ ์์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง, ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ฐ๋ ์คํํด์ผํ๋ ์ง๋ฌธ์ ๋์ง๊ณ , ์คํ ์ฌ๋ถ๋ ์ฌ๋ ๋ง์ด ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ compose๊ฐ job
๊ฐ์ฒด์ ๊ฐ์ ๊ฒ์ ์ฑํํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ด์ compose๋ ์์ ์ ๋ํ ์ผ๋ถ ์ง์ญ ์ํ๋ฅผ ์ ์งํด์ผํ๋๋ฐ ํ์ฌ๋ ์ ํ ์ํํ์ง ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ auto-up: false
๋๋ autorun: false
๊ฒ์ด์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ์ฝ๊ณ ๋ ์ค์นํ (๋ฒ์ ๋ณ) ๋ฐฉ๋ฒ์
๋๋ค.
@ cpuguy83 ๋๋ ๋น์ ์ด ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ๋ ๋ณต์กํ ๊ฒ์ผ๋ก ํ์ฅํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ ์ด๋ ์ํฌ ํ๋ก์ ๋ํด ์๊ณ ์๋ ๋์ปค ์์ฑ์ ์๋ํ์ง ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์ธ๋ถ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ด๊ฐ ์๋ ํ ๊ฒ์ docker-compose๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์ฒด ์คํ์ ์ ์ํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๊ณ ๋น์ ์ด ๋งํ๋ ์ํ๋ฅผ ์ ์งํ๋ค๊ณ ์์ํ ์ ์์ต๋๋ค. ์๋น์ค๊ฐ ์์๋๊ธฐ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํด๋๋ฉ๋๋ค. ๋ด๊ฐ ์์ํ์ง ๋ชปํ๋ ๊ฒ์ ๋ด๊ฐ ๊ฐ์ ธ์์ผ ํ ๋ณผ๋ฅจ์ ํ์ธํด์ผํ๊ฑฐ๋ ๊ทธ๊ฒ์ ์ ์ฉ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ํด ์ ์์๋ ์ปจํ ์ด๋์์ ์ถ์ถํด์ผํ๋ ๊ตฌ์ฑ์ ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์ ์๊ณก๊ฐ ํ์ผ์ ํ์ฑํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ์ ๋ docker-compose๊ฐ ๊ทธ ์ปจํ ์ด๋๋ฅผ ์ ๊ณตํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ๋ด ๋ฌธ์ ์ ๋๋ค.
์ฌ๋๋ค์ด ์ ๊ณ์ ๊ทธ๋ ๊ฒ ๋งํ๋์ง ๋ชจ๋ฅด๊ฒ ์ด
services:
my-script-container:
auto-up:false
๋ค์๋ณด๋ค ๊ฐ๋จํฉ๋๋ค.
scripts/containers/transients/you_name_it:
my-script-container:
๋์ผํ ์์ค์ ๋ณต์ก์ฑ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋ฏธ ์ ๋ ํดํค.
ํ ์ค๋ ๋์ ๋ํ ์์ด๋์ด๋ฅผ ์ป์ผ๋ ค๋ฉด # 2803์ ์ฐธ์กฐํ์ญ์์ค.
์ฌ์ฉ ์ฌ๋ก : ๊ตฌ์ฑ ์์๊ฐ ๋ง์ ํ๋ก์ ํธ์ ์ฌ์ฉ์๊ฐ ๋ฌด์์ ์ ํํ๊ณ ์ค์นํ ์ง ์ ํํ์ง๋ง compose ํ์ผ์ด ๋ชจ๋ ์ค์นํฉ๋๋ค.
์ ์ : docker.compose์ ์ ์ ๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ธํ๊ธฐ ์ํด docker-cmpose.overrider.yml์ ๋ฃ๋ ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
์ฆ
์ผ๋ถ ์ด๋ฏธ์ง :
์ ์ธ : ์
๋์์ docker-compose.yml์ ํด๋น ํญ๋ชฉ์ ๋ฌด์ํ๋ ๊ฒ์ ๋๋ค.
ํ์ ์๊ฐ์ ์๋ ค ์ฃผ์๋ฉด ๋ณ๊ฒฝ์ ๊ด์ฌ์ด์์ ๊ฒ์ ๋๋ค.
# 2์ ๋ํ ํฌํ๋ ์ค๋์ด ํ์์ ๋ถ๋ช ํ์ต๋๋ค.
@jimzucker ์ ์ ์๋ ์๋ํ์ง๋ง, ๋ช ์ ์ ์ผ๋ก ํธ์ถํ์ง ์๋ ํ์ด '์๋น์ค'๊ฐ ์คํ๋์ง ์๋๋ค๋ ๊ฒ์ ์ฆ์ ๋จ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๊ธฐ๋ณธ .yaml ํ์ผ์ "start : false"๊ฐ ํ์๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์ (๋๋ ์ ๊ฒฝ์ฐ์๋ ๋์ปค ์์ฑ ํ์ผ์ ์ ๋ฌํ ์ต์ข ์ฌ์ฉ์ / ๊ฐ๋ฐ์)๊ฐ ์ฌ์ ์ ํ์ผ์ ์ฐพ๋ ๊ฒ์ ๊ธฐ์ตํด์ผํฉ๋๋ค.
+1 for 2. compose์ ์ผ๋ถ๋ก docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด์ผํ์ง๋ง ์๋น์ค๋ก ์คํ๋์ง ์๋ ์ํฉ์ด ์์ต๋๋ค. ๋ค๋ฅธ ์๋น์ค (๋์ปค ์๋ง์ด ๋ด๋ถ์ ๋ง์ดํธ๋์ด ์์)๋ ์ด๋ฏธ์ง์์ ์ปจํ ์ด๋๋ฅผ ์์ฃผ ์คํํฉ๋๋ค.
+1์ 2์ด๊ณ "์๋ ์คํ"๋๋ "์๋ ์คํ"์ +1์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋น์ค ๊ทธ๋ฃน์ ๊ฒฝ์ฐ (@gittycat์์ ์ค๋ช ํจ)๋ ํ๊ฒฝ ๋ณ์ ala "auto-up : $ {ADMIN}"์ ํตํด ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๊น?
๋ํ docker-compose.yml
์๋น์ค๊ฐ ๊ฐ๋จํ docker-compose up
์๋ ์์๋์ง ์๊ณ ๋ช
์ ์ ์ผ๋ก ๋ง ์์๋๋๋ก ํ์ํ๋ ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ ์์ต๋๋ค.
ํด๊ฒฐ์ฑ
1)์ ์ง๊ธ ๊ฐ๋ฅํ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ด์ง๋ง docker-compose up
ํธ์ถํ๊ณ ํ์ผ์ ๋ถํ ํ๊ฑฐ๋ ๋ณต์ ํด์ผํ๋ ๋์ ํ๋ ์ด์์ yml ํ์ผ์ ์ง์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๋ฒ๊ฑฐ ๋กญ์ต๋๋ค.
๋๋ ํด๊ฒฐ์ฑ 2์ ๊ฐ์ ๊ฒ์๋ณด๊ณ ์ถ๊ธฐ ๋๋ฌธ์) (๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค๋ ๊ทธ๋ ๋ฏ์ด) ๋๋ # 3047์์ ์ด๊ฒ์ ๋ํ ๊ฐ๋ ์ฆ๋ช ์ ๊ตฌํํ์ฌ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํ๊ธฐ ์ํด ์ฝ๊ฐ ๋ ์ ์์ต๋๋ค. ํด๊ฒฐ์ฑ .
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ 4 ๋ชจ๋ +1
์ต์ 2 ๋ฐ 4์ ๊ฒฝ์ฐ +1
์ต์ 4์ ๊ฒฝ์ฐ +1. ์ผ๋ถ ๊ตฌ์ฑ์ ์คํฌ๋ฆฝํธ์ ํ์ฉ๋์ง ์์์ผํฉ๋๋ค (์ : ๋ค์ ์์ : ํญ์).
์ต์ 2๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์ํ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
service:
run_tests:
build: ./tests/
restart: always
auto-start: "false"
๊ทธ๊ฒ ๋ฌด์จ ๋ป์ผ๊น์?
@mathroc : ์๋ฏธ : "
@niko ์ ๋ง๋ค, ๊ฒ์ํ๊ธฐ ์ ์ ์กฐ๊ธ ๋ ์๊ฐํด์ผํฉ๋๋ค ...
์ต์ 2์ "ํฌํ"๋ฅผ +1๋ก ๋ณ๊ฒฝ
์ต์ 2์ +1, ์ฌ๋ฌ ํ๋ก์ ํธ์์ ํ์ํ์ต๋๋ค.
@bfirsh @dnephin ํ :
์ด ๋ฌธ์ ์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๊น? ์ฌ๊ธฐ์์๋ ๋๋ถ๋ถ์ ์๊ฒฌ์ด ์ต์
2๋ฅผ ์ ํธํ๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ด์ ๊ฐ์ (๋๋ ์ต์
3/4) ๊ตฌํ ๊ณํ์ด ์์ต๋๊น?
ํ ๋ฆฌํ์คํธ (# 3047)๋ฅผ ๋ค๋ฌ๊ณ ๋ณํฉ์ ๊ณ ๋ คํ๋ค๋ฉด ํ
์คํธ์ ๋ฌธ์๋ก ์์ฑ ํ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 1์ด ์๋ ํ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง ๋ค์์ ์ฅํฉํจ์ ์ค์ด๋ ๋ ๋์ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
docker-compose -f docker-compose.yml -f docker-compose.tests.yml up
์๋ง๋ ๋จ์ํ / ์ฆ๊ฐ ํ๋๊ทธ๋ฅผ ์ถ๊ฐ ํ ์ ์์๊น์? docker-compose --augment tests up
๋ฐ docker-compose.yml
์ ๋ณํ ์ธ ๊ฒฝ์ฐ ์๋์ผ๋ก ํด๊ฒฐ-๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์๊ฐ ๋ช
์ ์ ์ด์ด์ผํฉ๋๋ค.
ํ์ง๋ง suites
๋ฐ commands
๊ฐ์ ์๋ก์ด ์ต์์ ํค์๋ ์์ด๋์ด๊ฐ ๋ง์์ ๋ญ๋๋ค.
๋ค์ ๊ตฌ์ฑ์ ๋ค์์ ํ์ฉํฉ๋๋ค.
docker-compose run -s application
docker-compose run -c cache-clear
suites:
application:
services:
- database
- memcached
- application
tests:
extends: application
services:
- application
commands:
cache-clear:
service: application
workdir: /var/www
command/entrypoint: php app/console ca:cl
์ฝ๋์์ ์ด๋ฏธ "์ผํ์ฑ"์๋น์ค๋ผ๋ ๊ฐ๋
์ด ์์์ ์ ์ ์์ต๋๋ค (IMHO๋ docker-compose run
๊ฐ ํธ์ถ ๋ ๋๋ง ์ฌ์ฉ๋จ).
๋ค์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ปจํ
์ด๋์ com.docker.compose.oneoff=True
๋ผ๋ฒจ์ ์ง์ ํ๋ฉด ์์ํ๋ ค๊ณ ํ ๊น์?
๊ทธ๋ ์ง ์์ผ๋ฉด ์ต์ 2์ ํฌํํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ฐ์ฐํ ๋ง๋ฌ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
extends
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.์ด ๋ฐฉ๋ฒ์ ๊ด์ฐฎ์ต๋๋ค ...ํ์ง๋ง ์ด์ ๋ ํ์ฅ ํ ๋์์ ๋ํด image
๋ฅผ ์ ์ํด์ผํฉ๋๋ค. , scratch
๋ ์ฌ์ฉํ ์ ์์ต๋๋ค (๋ฐ๋ผ์ https://hub.docker.com/r/tianon/true/๋ก ๋๋จ).extends
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์คํ ๊ฐ๋ฅํ ์์ด๋์ด์ฒ๋ผ ๋ณด์
๋๋ค (์ฌ์ ํ docker / docker-compose ๋ฐ ๊ด๋ จ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํด ๋ฐฐ์ฐ๊ณ ์์).์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์
2์ ๊ฒฝ์ฐ +1
๋จ์ํ ๋ณํ ์ธ ๊ฒ ๊ฐ์ต๋๋ค ...
+1 ์ต์ 2,
๊ณตํต ํ๊ฒฝ ๋ฐ ๊ตฌ์ฑ ์งํฉ์ ๊ณต์ ํ๋ ์ฌ๋ฌ ์ปจํ ์ด๋์ ์ฌ์ฉ ์ฌ๋ก์์๋ ํ์ฅ ํ ๊ธฐ๋ณธ ์ปจํ ์ด๋๋ฅผ ๋น๋ํ์ง๋ง ์ค์ ๋ก ์ปจํ ์ด๋๋ฅผ ์์ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
auto-start:true|false
์ง๋ 9 ์๋ถํฐ rocker-compose ๋ผ๋ ๋ฉ์ง ์๋ฃจ์ ์ด ์์ผ๋ฏ๋ก ๋ค์์ ์คํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. _always_ | _once_ | _๋ชป_. ๋๋ ๋ํ ์ํ๋ฅผ ์ข์ํ๋ค : _running_ | _ran_ | _created_๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ํด ๋ณ๋์ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ํฌ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ตฌํ ๋ ๋๊น์ง tianon / true ํ๋ก์ ํธ์์ True asm ์ฝ๋ ๋ช ๋ น์ ํ์ณค์ต๋๋ค.
๋๋ ๋ํ ์ฒ์์๋ ์ต์ 2๊ฐ ๊ฐ์ฅ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ด์ ๋ ๋๋ฌด ์ ํ์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ์์ํ๊ณ ์ถ๊ฐ ํ ์งํ์๋ ํ ๋ฒ ์คํ ์์ ์ ๋ํ ํ์์ฑ์ด ๋ํ๋ฉ๋๋ค. ์ค์ ๋ก ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ํ์ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ ์ ํธ๋ฆฌํฐ / ๊ด๋ฆฌ์ ์์
์ค ์ผ๋ถ๊ฐ ํ๊ดด์ ์ผ ์ ์๊ณ ์ฌ์ฉํ๊ธฐ ๋งํ๋ฉด๋๊ธฐ ๋๋ฌธ์ state: created
(ran 0 ํ)์ state: ran
(ran> = 1 ํ)๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์๋น์ค ๋ง์ด๊ทธ๋ ์ด์
๊ณผ ๊ฐ์ ํน์ ์ํฉ์์.
๋ด๊ฐ ์ง๊ธ์ ๋ฝ์ปค-์ปด ํฌ์ฆ ๋๋ ์ต์
4์์์ ๊ฐ์ด ์ต์์ ์์ค _task_ ๋๋ _job_ ๊ฐ์ฒด + ์ข
์์ฑ์ ํํํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ด state: running | ran | created
์ชฝ์ผ๋ก ๋ ๊ธฐ์ธ๊ณ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์๋น์ค๊ฐ ์ด์ / ์ดํ์ ์์
์ ์คํํ๋๋ก ํธ๋ฆฌ๊ฑฐ ํ ์ ์์ต๋๋ค. .
์ด๊ฒ์ด ๋ด ์ฌ์ฉ ์ฌ๋ก์ ์ค์ํ๋ค๋ ๊ฒ์ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค. Docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ํ๊ฒฝ์ ๋ง๋ค๊ณ ํ ์คํธ ์ค์ํธ๋ฅผ ์คํํฉ๋๋ค. ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ํ ๋ฒ์ ์์ํ ๋์ ๋ฌธ์ ๋ ํ ์คํธ ์ค์ํธ๋ฅผ ์คํํ๊ธฐ ์ ์ ์๋น์ค ์ปจํ ์ด๋ (์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์ ๋ฌ๋ฆฌ ์์ ์)๋ฅผ ์ฝ๊ฒ ์ด๊ธฐํ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํ ํ ์์๋ ๊ฒ์ด ์ข์ต๋๋ค.
$ docker-compose --file="docker-compose-testing.yml" up -d --exclude=tests
$ sleep 5
$ docker-compose --file="docker-compose-testing.yml" run --rm tests
์ด๊ธฐํ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๊ธฐ ์ํด sleep 5
๋ณด๋ค ๋ ์ ๊ตํ ๊ฒ์ ์์ฑํ ์ ์์ง๋ง ์์ ์ค ๋ํซ์๋ ํ์ํ์ง ์์ต๋๋ค.
cli ํ๋๊ทธ์ ๋ํ ์ต์
์ ์ฝ์ง ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ต์
๋ชฉ๋ก์ --exclude
ํ๋๊ทธ๋ฅผ ์ถ๊ฐ ํ ๊ฒ์ ์ ์ํฉ๋๋ค. --exclude
ํ๋๊ทธ๋ up
๋ช
๋ น์ ์ง์ ๋ ์ปจํ
์ด๋๋ฅผ ์์ํ์ง ์๋๋ก ์ง์ํฉ๋๋ค. --exclude
ํ๋๊ทธ๋ ํ์์ ๋ฐ๋ผ ์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ์์์์ ์ ์ธ ํ ์ ์๋๋ก ๊ตฌ๋ฌธ ๋ถ์๋ฉ๋๋ค.
: +1 :
์ต์ 2๊ฐ ์ ํฉํ ์๋ฃจ์ ์ด ๋ ์์๋ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ฌ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์๋ก์ด ํ์ ์๋น์ค๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ํ๋ก์ ํธ์ ์ฐธ์ฌํ๋ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ์์ง ์๋ก์ด ์๋น์ค๊ฐ ํ์ํ์ง ์์ผ๋ฉฐ, ์์ ์ ๋ฐฉํดํ๋ ๋ฌธ์ ๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ์ํ์ง๋ ์์ง๋ง ์ฅ๊ธฐ๊ฐ ๋์ ํธ๋ฆฌ ์ธ๋ถ ๋ถ๊ธฐ๋ฅผ ์ ์งํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๊ฐ.
๋ณ๋์ "docker-compose-experimental.yml"ํ์ผ์ ์๋ ํ ์ ์์ง๋ง ํด๋น ๊ตฌ์ฑ ์์์ ๋ํ ์์ ์ ๋ํ ๋ชจ๋ ๋ฌธ์๋ ๊ตฌ์ฑ ์์๊ฐ ์์ง ์คํ์ ์ธ ๋์ ํ ๋ฐฉํฅ์ผ๋ก ์์ฑ๋์ด์ผํ๋ฉฐ ํ์ค ์งํฉ์ ์ผ๋ถ๊ฐ๋๋ฉด ์์ ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์๋น์ค.
์ต์ 2์ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
@acran ๋๋ ๋น์ ์ด ์ด๊ฒ์ ์์ผ๋ก ๋์๊ฐ๋ ๊ฒฌ์ธ๋ ฅ์ ์ป์ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ํ ์์ฒญ์ ์ ์ถํ๋ ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค. ์๋ง๋ # 3047์์ ๊ฐ๋ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด ๋ฆฌ๋ฒ ์ด์คํ๋ฉด์ด ๋ฌธ์ ์์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@jimzucker ๊ธ์ # 3047์ ์ด๋ฏธ ํ ๋ฆฌํ์คํธ์ด๊ณ ๋๋ ์ฌ์ ํ ๊ฐ๋ฐ์๋ค์ ์ฝ๋ฉํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค. : disappointed :
์์ ๋ด ์๊ฒฌ์ ์ฐธ์กฐํ์ญ์์ค. PR์ ๋ณํฉ ํ ๊ฐ์น๊ฐ์๊ฒ ๋ง๋ค๋ ค๋ฉด ์ฌ์ ํ ๊ด๋ จ ๋ฌธ์ ๋ฐ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋์ด ์ ๊ทผ๋ฒ์ด ์ ์คํธ๋ฆผ์ ์ํด ํตํฉ๋๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์์ง ๋ชปํ ์ฑ ๊ทธ ์์ ์ ์ํํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ฒ์ ๋ํ ๋์ ๋ ธ๋ ฅ์ด ๋ฌด์๋ฏธ ํ ์ ์์ต๋๋ค ...
+1 ์ต์ 2
@acran , ๊ด๋ จ ๋ฌธ์ ๋ฐ ํ ์คํธ ์ฌ๋ก๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ๋์์ ๋๋ฆฌ๊ณ ์ํฉ๋๋ค. ๊ด์ฐฎ์ต๋๊น?
+1 ์ต์ 2
์๋๋ฉด Kubernetes์์์ ๊ฐ์ด ์ผ์ข ์ Job์ ์ ์ ํ ์ ์์ต๋๊น?
์ต์ 2์ ๊ฒฝ์ฐ +1
์ฌ๋ฌ ์๋น์ค๊ฐ ํฌํจ ๋ docker-compose๊ฐ ์์ผ๋ฉฐ ๊ทธ์ค ํ๋ (๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ ํ๋ก๋์ ํ๊ฒฝ์ด ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์์๋์ด์ผํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ์ docker-compose ํ์ผ์ ์ ์งํด์ผํฉ๋๋ค. ์ต์ 2๋ ์ ํํ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ ๊ฒ์ ๋๋ค!
: +1 : ์ต์ 2์ ๊ฒฝ์ฐ
+1 ์ต์ 2
@acran ์ ๋ ํผ๋๋ฐฑ์ ๋ฐ๊ธฐ ์ํด ์ฌ๋ฐ๋ฅธ ํ๋ก์ธ์ค / ์ฑ๋์ ์ฐพ๊ธฐ ์ํด SF์ ์ผ๋ถ ์ฐ๊ฒฐ๋ถ์ ์ฐ๋ฝํ์ฌ ์์ผ๋ก ๋์๊ฐ ์ ์๋๋ก ๊ณ์ ์ง์ผ๋ด์ฃผ์ญ์์ค.)
๐ ์ต์ 2
์ต์ 2์ ๊ฒฝ์ฐ +1
+1 ์ต์ 2
+1 ์ต์ 2
๋ํ ๋๋ ์ต์ 2์ ํฌํํฉ๋๋ค
๋ ๋ค๋ฅธ ์์ด๋์ด : ์ด์ ์ต์์ networks
๋ฐ volumes
๊ฐ ์์ผ๋ฏ๋ก images
์ต์
๋ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ํ๋ ค๋ฉด ์ด๋ฌํ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค๊ฑฐ๋ ๋น๋ํด์ผํ๋ค๋ Compose์ ๋ํ ํํธ๊ฐ ๋ ์ ์์ง๋ง docker-compose up
๋ฅผ ์ํ ํ ๋๋ ์คํ๋์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ๋ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์์ ์๋ํฉ๋๋ค.
1) ์ฌ๊ธฐ์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ ์ผ์ข
์ ๊ด๋ฆฌ ๋ช
๋ น์ ์คํํ๋ ค๋ ๊ฒฝ์ฐ์
๋๋ค. docker-compose run
์ ์๋น์ค๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์คํ์ค์ธ ์ด๋ฏธ์ง๋ก ๋์ฒด ๋ ์ ์์ต๋๋ค.
2) Docker ์ด๋ฏธ์ง๋ฅผ ์คํํ์ง๋ง ํญ์ ์คํ๋์ง ์๋ ์ด์ ๊ฐ์ ์ฑ .
/ cc @dnephin @aanand @ shin-
Docker-compose ํ์ผ์์ ๋จ๊ธฐ ์ปจํ ์ด๋์ ํ์ํ ๋ชจ๋ ์ต์ (์ : ๋ณผ๋ฅจ / ๋ง์ดํธ ํฌ์ธํธ, ๋คํธ์ํฌ, ๋งํฌ, ์ด๋ฆ ๋ฑ)์ ๊ตฌ์ฑ ํ ์ ์๋ค๋ ์ ์ ์ ์ธํ๋ฉด ์ปจํ ์ด๋๋ฅผ ์คํํด์ผ ํ ๋๋ง๋ค ๊ณ์ ์ถ๊ฐํด์ผํฉ๋๋ค.
2016 ๋ 9 ์ 13 ์ผ ์ค์ 3:58:41 CDT์ Ben Firshman [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋ ๋ค๋ฅธ ์์ด๋์ด : ์ด์ ์ต์์ ์์ค
networks
๋ฐvolumes
๊ฐ ์์ผ๋ฏ๋ก
images
์ต์ ๋ ์ถ๊ฐํ์ญ์์ค. ์ด๊ฒ์ Compose์ ๋ํ ํํธ๊ฐ ๋ ๊ฒ์ ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ค๋ฉด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค๊ฑฐ๋ ๋น๋ํด์ผํ์ง๋ง
docker-compose up
ํ ๋ ์คํ๋์ง ์์ต๋๋ค.์ด๊ฒ์ ๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ๋ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์์ ์๋ํฉ๋๋ค.
1) ์ฌ๊ธฐ์์ ์ด๋ค ์ข ๋ฅ์ ๊ด๋ฆฌ๋ฅผ ์ํ๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์
์คํํ ๋ช ๋ น.docker-compose run
์ (๋) ์คํ์ค์ธ ์ด๋ฏธ์ง๋ก ๋์ฒด ๋ ์ ์์ต๋๋ค.
์๋น์ค๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ.
2) ๊ฐ์ ์ฑ์ด ์คํํ๋
Docker ์ด๋ฏธ์ง์ด์ง๋ง ํญ์ ์คํ๋์ง๋ ์์ต๋๋ค./ cc @dnephin @aanand @ shin-
๋๊ธ์ ๋ฌ์ ๊ธฐ ๋๋ฌธ์ ์์ ํ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/1896#issuecomment -246618909
๋ด Android ๊ธฐ๊ธฐ์์ K-9 Mail์ ์ฌ์ฉํ์ฌ ๋ณด๋์ต๋๋ค. ๊ฐ๊ฒฐํจ์ ์ฉ์ํด์ฃผ์ญ์์ค.
๋๋ ์ด๊ฒ ์ ๋ํด docker-compose up foo
๋ง ์ค์ ํ๊ณ ๋น๋ ๋ฐ ์ข
๋ฃ๋ฅผ ์ํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
์ฌ๊ธฐ์์ ๋ ๋ง์ ์ดํด๋ฅผ ์ป์ผ๋ ค๋ ์๋ : ์ต์
2)๋ ๋ ์ผ๋ฐ์ ์ธ " docker-compose.yml
์์ initial_scale
๊ฐ์ ์ํฉ๋๋ค"์ ํน์ํ ๊ฒฝ์ฐ์
๋๊น? (# 1661, # 2496 et. al. ์ฐธ์กฐ)
@ankon ์ ํ ์๋๋๋ค.
images
[์น์ ] ์ถ๊ฐ
@bfirsh ์ด๊ฒ์ ๋ด๊ฐ https://github.com/dnephin/dobi๋ก ์ทจํ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๊ธฐ ์์ํฉ๋๋ค
networks
๋ฐ volumes
๋ ์ค์ ๋ก ์ง์ ์๋ํ์ง ์์ผ๋ฉฐ ์ปจํ
์ด๋์์ ํ์์ ๋ฐ๋ผ ์์ฑ๋ฉ๋๋ค. ์ด๋ฏธ์ง๋ฅผ ์์ฒด ์น์
์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ ํ์ฌ์ ๋์์ ๋ณ๊ฒฝํ์ง ์๊ณ Compose ๊ตฌ์ฑ์ ๋ ๋ณต์กํ๊ฒ ๋ง๋ค๋ฟ์
๋๋ค. ์ด๋ฏธ์ง ๋ง ๋น๋ํ๋ ค๋ฉด docker-compose build
.์์ฑ ํ์ผ์์ ์ค์ผ์ผ๋ง ์ ์ฝ ์กฐ๊ฑด์ ์ ์ธํ๋ ๊ฒ์ ๋ํ # 2496์ ์ค๋ ๋์ ํ ๋ก ์ ๋ค์ ์ฝ์ผ๋ฉด์ ์ต์ 2๋ณด๋ค ์ต์ 4 (์ฆ, ์๋ก์ด ์ต์์ ์น์ )๋ฅผ ์ ํธํฉ๋๋ค.
ํนํ utilities
์ ๊ฐ์ ์น์
์ด๋ฆ์ด ์ ํฉ ํ ๊ฒ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ํ์ง ์์ ๊ตฌ์ฑ ์์์ด์ง๋ง ํ์ํ ๋ ์ฐ๊ฒฐ๋๋ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌ์ฑํด์ผํฉ๋๋ค. ์ฌ๋๋ค์ด ์ ์ ํ docker run
์ฃผ๋ฌธ์ ์ง์ ๋ง๋ค๋๋กํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ผํ์ฑ ๊ด๋ฆฌ ๋ช ๋ น๋ฟ๋ง ์๋๋ผ pgweb ๋ฐ Celery Flower์ ๊ฐ์ ๋ณด์กฐ ๋๋ฒ๊น ๋ฐ ๋ด๋ถ ๊ฒ์ฌ ์๋น์ค๋ ํฌํจํฉ๋๋ค (๊ฐ๋ฐ ์ค์ ์คํํ๋ ๋ฐ ๋งค์ฐ ํธ๋ฆฌํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ถ๊ฐ ๋ณด์์ผ๋ก ์ธํด ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ํ์ง ์์ ๊ฒ์ ๋๋ค). ๊ทธ๋ค์ด ์์ฑํ๋ ์ํ ํ๋ฉด ์์ญ).
์ด๋ฌํ ์๋ก์ด "์๋น์ค๊ฐ ์๋"์ ์๋ฏธ๋ฅผ ์ ์ํ๋ ๊ฒ๋ ํจ์ฌ ์ฌ์์ง๋๋ค. docker-compose build
๊ณผ ๊ฐ์ ์ ๊ทํ๋์ง ์์ ๋ช
๋ น์ ์ ์ธํ๊ณ ๋ services
์ _ ์ ํํ _ ๋์ผํฉ๋๋ค (ํด๋น ํ์์ ๋ํ ๋ชจ๋ ํฅํ ๋ณ๊ฒฝ ํฌํจ). docker-compose build
, docker-compose pull
๋ฐ docker-compose up
๋ ์์ ํ ๋ฌด์ํฉ๋๋ค. "์๋น์ค"๊ฐ ์๋ "์ ํธ๋ฆฌํฐ"์ ๋์ด๋ ๊ตฌ์ฑ ์์๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ฆ์ ์ง์ ํด์ผํฉ๋๋ค. ์๋ง๋์ด ๋ ์ --all
ํ์ฌ์ ๋น์ทํ ์ต์
, docker-compose rm
). ๊ทธ๋ฌ๋ ์ด๋ฆ์ผ๋ก ์ด๋ฌํ ์ ํธ๋ฆฌํฐ์ ์ํธ ์์ฉํ๋ CLI๋ ์ผ๋ฐ ์๋น์ค์ ์ํธ ์์ฉํ๋ CLI์ ๋์ผํ๋ฉฐ (์ถ๊ฐ ์ ํธ๋ฆฌํฐ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ํด์ผํ๋ ํ์ ์ ์ง์๋ ๋ฌ๋ฆฌ) docker-compose๋ ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. ์๋น์ค์ ์ ํธ๋ฆฌํฐ ์ ์ ์ฌ์ด.
# 2496์ ํ์ฅ ์ ์์ ์ ์ฌ์ ์ผ๋ก์ด ๋์์ ์ป๊ธฐ ์ํด (ab) ์ฌ์ฉ๋ ์ ์์ง๋ง ์ ๋๋ก ์ค๊ณ๋ ๊ธฐ๋ฅ์ด ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค.
๋๋ ๊ทธ ๋์์ธ, @ncoghlan์ ์ข์ํ๋ค.
utilities
๋์ .services
์ด๋ฆ์ ์ง์ ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ์ด๊ฒ์ ๋น์ฐํ services
๋ฐ .services
๊ฐ ์ ํํ ๋์ผํ ์๋ฏธ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ ๋ฌํฉ๋๋ค. ์ ์ผํ ์ฐจ์ด์ ์ .services
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์๋์ง ์๋ ํ์ผ ์ด๋ฆ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ๋จ์ ์ ๋ ์ฌ์ด์ ์ฐจ์ด๊ฐ ์ฝ๊ฐ ๋ฏธ๋ฌํ๋ค๋ ๊ฒ์
๋๋ค.
@ncoghlan ์ด ๊ฑฐ๊ธฐ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ธฐ๋ณธ ์์ด๋์ด๊ฐ
up
๋ฐ start
.)@bfirsh @ncoghlan ๋๋ ์์ ํ @dnephin์ ๋์ :
์ด ๋ฌธ์ ์์ ํ์ธ ๋ ๋ฌธ์ ๋ฅผ ์ค์ ๋ก ํด๊ฒฐํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ฌ๋๋ค์ ์ด๋ฏธ์ง๋ฟ๋ง ์๋๋ผ ์ปจํ ์ด๋๋ฅผ ์ํฉ๋๋ค.
๋ด๊ฐ ์ํ๋ ์ํฌ ํ๋ก์ฐ์ ํ์ํ ๊ฒ์ ๋ฐ๋ก ์ฌ๊ธฐ์์๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์๊ฒ ๋จ์ํ ์๋น์ค์
๋๋ค. ์ผ๋ฐ ์๋น์ค์ฒ๋ผ ์ ์๋๊ณ ์ผ๋ฐ ์๋น์ค์ฒ๋ผ ์์ / ์ค์ง๋ฉ๋๋ค.
_only_ ์ฐจ์ด์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋จํ docker-compose up
์ํด ์๋์ผ๋ก ์์๋์ง ์๊ณ ๋ช
์ ์ ์ผ๋ก ์ง์ (๋๋ ์ข
์์ฑ์ผ๋ก ๋์ด์จ ๊ฒฝ์ฐ) ํ ๋๋ง ์์๋๋ค๋ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ์๋ก์ด ์ต์์ ์น์
์ด๋ ์ด๋ฌํ ์ผํ์ฑ ์ปจํ
์ด๋์ ๋ํ ์์ ํ ์๋ก์ด ๊ฐ๋
์ด ํ์ํ์ง๋ ์์ง๋ง ์ ํ์ ์๋น์ค ๊ตฌ์ฑ ๋งค๊ฐ ๋ณ์ ๋ง ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๊ฐ๋
์ฆ๋ช
์ผ๋ก ๋ด pull request # 3047์์ ๊ตฌํํ์ต๋๋ค. ์์ฃผ ์์ ๋ณํ์ด์ง๋ง ๋ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ ํ ๋ง์กฑ์ํฌ ๊ฒ์
๋๋ค. ๊ทธ๋์ ๋ด๊ฐ ํ ์์๋ ์ผ์ด ๋ ์์ผ๋ฉด ์ด๊ฒ์ ๋ณํฉํ๊ธฐ ์ํด ์๋ ค์ฃผ์ธ์ (=
์ด๊ฒ์ ํ ์คํธํ๋ ค๋ ์ฌ๋์ ์ํด ์ปจํ ์ด๋์์ docker-compose๋ฅผ ๋น๋ํ๊ณ ์คํํ๋ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# download and build
git clone [email protected]:acran/compose.git -b auto_up
cd compose
docker build -t docker-compose .
# create an example docker-compose.yml
cat > docker-compose.yml <<EOF
version: "2"
services:
foo:
image: busybox
auto_up: false
command: echo foo
bar:
image: busybox
auto_up: false
command: echo bar
depends_on:
- foo
baz:
image: busybox
command: echo baz
EOF
# start all default services only, i.e. baz
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose up
# start service foo only
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose up foo
# start service bar, foo is pulled in as a dependeny
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose up bar
# clean up all services, i.e. foo, bar and baz
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose down
@acran , ๊ด๋ จ ๋ฌธ์ ๋ฐ ํ ์คํธ ์ฌ๋ก๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ๋์์ ๋๋ฆฌ๊ณ ์ํฉ๋๋ค. ๊ด์ฐฎ์ต๋๊น?
@ dattran-vn01 ๋ฌผ๋ก , ๋๋ ํ๋ณต ํ ๊ฒ์ ๋๋ค : ์ค๋ง์ผ :
๊ทํ์ ์์ ์์ @acran ์ ํ์ฌ Compose์ ๋ค๋ฅธ ๋์์ ๊ฐ๋ ์ ์ผํ ๋ช
๋ น์ด๋ฉฐ ํด๋น ๋์์ up baz
์ฌ์ฉํ์ฌ ์ํ ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ Compose ํ์ผ์ ์ฌ์ฉํ์ฌ ๋์ผํ ์์
์ ์ํ ํ ์๋ ์์ต๋๋ค.
๋ค๋ฅธ ๊ธฐ๋ณธ ์๋น์ค ๋ชฉ๋ก์์ ์ผ๋ถ ๋ช ๋ น์ด ์๋ํ๋ ๊ฒ์ ๋งค์ฐ ํผ๋์ค๋ฌ์ ๋ณด์ด๋ฉฐ์ด ๊ธฐ๋ฅ์ด ๋ง์์ ๋ค์ง ์๋ ์ด์ ์ค ํ๋์์ต๋๋ค.
๊ทํ์ ์์ ์์ @acran ์ ํ์ฌ Compose์ ๋ค๋ฅธ ๋์์ ๊ฐ๋ ์ ์ผํ ๋ช ๋ น์ด๋ฉฐ ํด๋น ๋์์ up baz๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ Compose ํ์ผ์ ์ฌ์ฉํ์ฌ ๋์ผํ ์์ ์ ์ํ ํ ์๋ ์์ต๋๋ค.
@dnephin ์, ์ ํํ ์๊ณ ์์ต๋๋ค.์ด ์์์๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ 10 ๊ฐ์ ์๋น์ค์ ๋จ ํ๋์ ์ผํ์ฑ ์๋น์ค ( "init"๋๋ "backup"/ "dump"์ ๊ฐ์)๋ก ์์ํด๋ณด์ญ์์ค.์ด ๊ฒฝ์ฐ ํ๋์ ๋จ์ผ ์๋น์ค๋ฅผ ์ ์ธํ๊ณ ๋ช
๋ น ์ค์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋์ดํด์ผํฉ๋๋ค. docker-compose up service1 service2 ... service10
์ ๊ฐ์ ์๋น์ค ํด์ (์๋ ์ฐธ์กฐ). ํนํ ๋ชจ๋ ์๋น์ค๋ฅผ ๊ธฐ์ตํ๊ณ docker-compose.yml
๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ์ถ์ ํด์ผํฉ๋๋ค.
๋ํ ์ฌ๋ฌ YAML ํ์ผ์ ์ฌ์ฉํ ์์๋ ๊ฐ๋ฅ์ฑ์ ๋ํด ์๊ณ ์์ต๋๋ค . ์์ ์ฒซ ๋ฒ์งธ ์ฃผ์์ ์ฐธ์กฐํ์ญ์์ค. ๋ช ๋ น ์ค์์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋ช ์ ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ์ฌ๊ธฐ์ ์ธ๊ธ ๋ ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค.
๋ฌธ์ ๋ฅผ ์๊ฐํํ๋ ๋ ๋ค๋ฅธ ์ docker-compose.yml
:
version: "2"
services:
init:
image: busybox
auto_up: false
command: echo "I do one-time initializing"
service1:
image: busybox
command: echo "I'm service #1"
service2:
image: busybox
command: echo "I'm service #2"
service3:
image: busybox
command: echo "I'm service #3"
service4:
image: busybox
command: echo "I'm service #4"
service5:
image: busybox
command: echo "I'm service #5"
service6:
image: busybox
command: echo "I'm service #6"
service7:
image: busybox
command: echo "I'm service #7"
service8:
image: busybox
command: echo "I'm service #8"
service9:
image: busybox
command: echo "I'm service #9"
service10:
image: busybox
command: echo "I'm service #10"
๊ฐ๋จํ docker-compose up
_with_ auto_up
์์ฑ์ init
์๋น์ค๋ฅผ ์ ์ธํ ๋ชจ๋ ์๋น์ค์์ ์์๋ฉ๋๋ค. ์์ด ๋์ผํ๊ฒํ๋ ค๋ฉด 10 ๊ฐ์ ์๋น์ค๋ก ํจ์ฌ ๋ ๊ธด ๋ช
๋ น์ ์
๋ ฅํ๊ฑฐ๋ YAML ํ์ผ์ ๋ถํ ํ๊ณ ์ฌ๋ฌ ํ์ผ์ ์ง์ ํด์ผํฉ๋๋ค.
๋ฐ๋ผ์ ์ฌ๊ธฐ์์ ์์ฒญํ ๊ธฐ๋ฅ์ ์์ ํ ์๋ก์ด ๊ธฐ๋ฅ์ด ์๋๋ผ ํธ๋ฆฌํจ๊ณผ cli์์ ์ ๋ ฅ์ ์ค์ด๋ ๊ฒ์ ๋๋ค.
"์ฌ๋ฌ ๊ตฌ์ฑ ํ์ผ ์ฌ์ฉ"์ต์ (์ค์ ๋ก ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ์ข์ ์ต์ )๊ณผ ๊ด๋ จํ์ฌ ์ฌ์ฉ์ฑ ๋ฌธ์ ๋ ์ค์ ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ธ๋ค๋ ๊ฒ์ ๋๋ค.
$ docker-compose up one-shot-command
ERROR: No such service: one-shot-command
$ docker-compose up -f docker-compose.yml -f docker-compose-utils.yml one-shot-command
# Actually goes & does the requested thing
๊ทธ๋ฌ๋ฉด ๋ถ์ผ์น๊ฐ ํ๋ก์ ํธ ๋ฌธ์ ๋ฐ ์๋ํ์ _all_์ ๊ฐ์ผ์ํต๋๋ค. _two_ compose ํ์ผ์ ์ ํธ๋ฆฌํฐ ๋ช ๋ น์ ์คํํ๋ ค๋ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ๊ณ ์ ํธ๋ฆฌํฐ ํ์ผ์ ๋ช ๋ น์ ๋ํด ์ ์ฒด ํธ์ถ์ด ์ ๊ณต๋์๋์ง ํ์ธํด์ผํฉ๋๋ค. ๋๋ ์๋น์ค๊ฐ "ํญ์ ์คํ"์์ "๋ช ์ ์ ์ผ๋ก ์์ฒญ ๋ ๊ฒฝ์ฐ์๋ง ์คํ"์ผ๋ก ๊ฐ๋ฑ ๋ ๊ฒฝ์ฐ ๊ตฌ์ฑ ํ์ผ ์ด๋ฆ์ ์ ๊ณตํ์ง ์๋ ํธ์ถ์ ์ฐพ์์ ์ถ๊ฐํด์ผํฉ๋๋ค.
์ด๊ฒ์ด ๋ชจ๋ _doable_์ ๋๋ค. ์์ฑ ํ์ผ์์ "๋ด๊ฐ ๋ช ์ ์ ์ผ๋ก ์์ฒญํ ๋๋ง ์คํํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ์ง ๋ง์ญ์์ค"๋ผ๊ณ ๋งํ ์์๋ ๊ฒ์ ๋นํด ์ง์ฆ์ด๋ฉ๋๋ค.
๋๊ตฐ๊ฐ ์ ์๊ฒ ์ด๋ ๊ฒ ๋งํ์ต๋๋ค. _ "์ฌ๋ฌ ๋๋ํ ์ฌ๋๋ค์ด ์ด๋ค ์ ๊ทผ ๋ฐฉ์์ด ์ต์ ์ธ์ง ๊ฒฐ์ ํ ์ ์๋ค๋ฉด, ๋ณดํต ๋ ๋ค ๋์์ง ์์ต๋๋ค. ์ต์ ์ ์๋ฌด๊ฒ๋ํ์ง ์๋ ๊ฒ์ ๋๋ค."_
์ด ์นด๋๋ ์ด๊ฒ์ ๋ํ์ ์ธ ์์ฒ๋ผ ๋ณด์ ๋๋ค :)
์ด์ docker๊ฐ ์ฅ๊ธฐ ์คํ ๋ช ๋ น์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์๋น์ค ๊ฐ๋ ์ ์ง์ํ๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ค์ ์์ ์ ์ฑ ์ ์ ์ธํ๊ณ ๋ ํ์ฉ๋์ง ์๋ ์๋น์ค์ ๋์ผํ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ช ๋ น์ด๋ผ๋ ์ ์น์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
๋ด ์ค์ ์์ ์ธํ๋ผ (nginx, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์น ์๋ฒ, ๋ฉ์์ง ๋๊ธฐ์ด ...)๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ docker-compose์ ์๋น์ค๊ฐ ์์ต๋๋ค. ๋ํ ๋๋ฒ๊น ์ด์ (์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์น GUI)์๋ง ํ์ํ ์ถ๊ฐ ์๋น์ค๋ฅผ ์ ์ํ์ต๋๋ค.
"๋๋ฒ๊น
"์๋น์ค๊ฐ ์๋์ผ๋ก ์์๋์ง ์๋๋กํ๊ณ ์ถ์ง๋ง ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ๊ฐ๋จํ docker-compose up -d database-gui
๋ง ์์ผ๋ฉด๋ฉ๋๋ค.
๋ํ : ๊ฐ๋ ๋ง์์ด ๋ฐ๋๊ณ ์ด๋ฌํ ์๋น์ค ์ค ํ๋๊ฐ ํญ์ ์์๋๊ธฐ๋ฅผ ์ํฉ๋๋ค ... => ์ต์ 2) ํด๋น ํ๋๊ทธ ํ๋๋ง ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
=> ์ต์ 2์ ํฌํํ์ญ์์ค. ๊ฐ๋จํ๊ณ ์ฌ๊ธฐ์์๋ ๋ชจ๋ ์ฌ๋์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์๋ฃจ์ ์ ์ ์๊ฒ ๊ณผ๋ํ ์์ง๋์ด๋ง์ฒ๋ผ ๋๊ปด์ง๋๋ค. ์ค์ ์ ์ธ ํ์๊ฐ ์๋ ๋๋ฌผ๊ฑฐ๋ ์์ ๋งํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ์ ๋ณต์ก์ฑ์ ์ถ๊ฐํฉ๋๋ค.
๋ด +1์ ์ถ๊ฐํ๋ ค๋ฉด ์ฌ๊ธฐ์ ์์ต๋๋ค. Django ์ฑ์์ ์คํ ์ค์ด๋ฉฐ Docker์์ ์คํํ ๋ ์
ธ ๋๋ ํ
์คํธ๋ฅผ ์คํํ๊ฑฐ๋ ๋ง์ด๊ทธ๋ ์ด์
๋ช
๋ น์ ์คํํ๋ ์ปจํ
์ด๋๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค. ํ์ง๋ง ์ฑ์ ์์ํ ๋๋ง๋ค์ด ์ค ์ด๋ค ๊ฒ๋ ์คํํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ฌ๋ฌ ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ๋ฉด ์๋ํ์ง๋ง, ์
๋ ฅ, ์คํฌ๋ฆฝํ
๋๋ ๋ง์ผ ๊ธธ์ด์ ๋ช
๋ น ์ค ๋ณ์นญ ์ง์ ์ด ํ์ํฉ๋๋ค. ๋ด๊ฐ compose๋ฅผ ์ ํ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ์ปจํ
์ด๋๋ฅผ ์
ธ ์คํฌ๋ฆฝํธ (๋๋ python ์คํฌ๋ฆฝํธ ... ์ปจํ
์ด๋ ๊ตฌ์ฑ์ ์ ์ฅํ๊ธฐ ์ํด ํตํฉ YAML ํ์ผ ์ถ๊ฐ ... ์ ๊น ...) ๋ด ์ปจํ
์ด๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
์ ์คํํ๊ธฐ ์ํด docker-compose -f common.yml -f dev.yml -f local.yml -f commands.yml up migrate
๊ณผ ๊ฐ์ ์์
์ ์ํํ๊ณ ์ถ์ง ์์ต๋๋ค. ๋์์ /bin/true
๋ฅผ ๋ช
๋ น์ผ๋ก ์ฌ์ฉํ๊ณ docker-compose -f common.yml -f dev.yml -f local.yml up commands 'python3 manage.py migrate'
์ ๊ฐ์ ์์
์ ์ํํ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ๊ตฌ์ฑ ์ด๋๊ฐ์ ํ ๋ฒ์ ๋ช
๋ น์ ์ ์ฅํ๋ฉด ๋งค์ฐ ์ ์ฉ ํ ๊ฒ์
๋๋ค. ์ต์
2, 3 ๋ฐ 4 ์ค ํ๋๊ฐ ์ ์๊ฒ ํจ๊ณผ์ ์
๋๋ค.
์ด ์ค๋ ๋์ ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ถ์ ์ผ๋ก ์์ ํด์จ ๋๊ตฌ ์ธ dobi๋ฅผ ์ดํด๋ณผ ๊ฒ์ ์ ์ํ๊ณ ์ถ์ต๋๋ค.
compose๋ "ํ๊ฒฝ"์ ํ์ฑํ๋ ์ฅ๊ธฐ ์คํ ์๋น์ค๋ฅผ ์์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
dobi๋ ์์ฐจ ํ๋ก์ ํธ ๋น๋ ์์
์ ์ค์ ์ ๋ก๋๋ค.
์ฐพ๊ณ ์๋ ๊ฒ (์ ธ ์คํ, ๋จ์ ํ ์คํธ ์คํ, ๋ง์ด๊ทธ๋ ์ด์ ์คํ)์ ๋ชจ๋ ํ๋ก์ ํธ ์์ ์ด๋ฏ๋ก dobi ๋ชจ๋ธ์ ํจ์ฌ ๋ ์ ํฉํฉ๋๋ค.
dobi์ compose๋ ํจ๊ป ์ ์๋ํ๋ฏ๋ก compose ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ dobi์์ compose๋ฅผ ์์ํ ์ ์์ต๋๋ค.
compose=dev-environment:
files: [docker-compose.yml, local.yml]
project: 'theprojectname'
๋ค์์ ์ฌ์ฉํ์ฌ ์คํํ ์ ์์ต๋๋ค.
dobi dev-environment
์ฌ๊ธฐ์ ์์ฑ ํตํฉ ๋ฐ db ๋ง์ด๊ทธ๋ ์ด์ ์คํ์ ์๊ฐ ์์ต๋๋ค. https://github.com/dnephin/dobi/tree/master/examples/init-db-with-rails
์ฌ๋ฌ ์ํฌ ํ๋ก์ ์ (ํ ์คํธ ์คํ, ๋ํ ํ ์ ธ ์์, ์ต์ ์ด๋ฏธ์ง ๋ฆด๋ฆฌ์ค ๋ฐ ๋น๋ ํฌํจ)๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค. http://dnephin.github.io/dobi/examples.html
2์ +1). ์ฐ๋ฆฌ์ ๊ด์ ์์๋ ์ผํ์ฑ ๋ช ๋ น๊ณผ ๊ฐ์ ํํ์ง ์์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๊ฐํ๊ณ ๋ ผ์ ํ ํ์๊ฐ ์์ง๋ง, ์์ฑ๋์ด ์ฌ์ฉํ ์ค๋น๊ฐ๋์ด ์์ง๋ง ํ์ํ ๋ ํ์ํ ๋ ์์ํ ์์๋ ์ค์ ์๋น์ค๋ฅผ ์ํฉ๋๋ค (๊ธฐ๋ณธ์ ์ผ๋ก๋ ์ฌ์ฉํ์ง ์์). ์์).
"ํํ์ง ์์ ์ฌ์ฉ ์ฌ๋ก"? ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ ์คํํฉ๋๊น? ๋จ์ ํ ์คํธ๋ฅผ ์คํํฉ๋๊น? ๋ณดํธ๋ผ๊ธฐ๋ฅผ ์คํํฉ๋๊น? ์นํฉ?
์, ๋๋ ๋ฌ๋ฆฌ์ง ๋ง ์ปจํ ์ด๋ ๋ด๋ถ์์ ๋ฌ์ฑํ๊ณ ์ ์ด ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋น์ ์ ๊ฒฌํด ๋ ์๊ตฌ๋ฅผ ํผ์ํ๊ณ ์ถ์ง ์์ต๋๋ค.์ด ํ ๋ก ์ ๋ถ๊ฝ์ผ๋ก ๋ง๋ค์ง ๋ง์ญ์์ค. docker compose์ ๋ํ ์ฐ๋ฆฌ์ ์๊ตฌ ์ฌํญ์ด ๋ฐ๋์ ์ถฉ๋ํ๋ ๊ฒ์ ์๋๋๋ค.
mysql ์ปจํ ์ด๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ฐ๊ณ ๋ค์ด๋ก๋ ํ ๋คํ์์ ์คํค๋ง๋ฅผ ๋ค์๋ก๋ํ๋ ์คํฌ๋ฆฝํธ์ ๋ํ docker-compose ์ปจํ ์ด๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์ผ๋ ค๊ณ ์ด ์ค๋ ๋๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋งค์ฐ ๊ธธ๊ณ ํ๊ดด์ ์ธ ํ๋ก์ธ์ค์ด๋ฏ๋ก ์๋น์ค๋ฅผ ๋ถ๋ฌ์ฌ ๋๋ง๋ค ์คํ๋๋ ๊ฒ์ ์ํ์ง๋ ์์ง๋ง ์์ฒด dockerfile์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ ์ปจํ ์ด๋ ์งํฉ ๋ด์์ ์คํํด์ผํฉ๋๋ค.
์์ , ๋ช ๋ น ๋ฑ ๋ฌด์์ด๋ ๋ถ๋ฅด์ง ๋ง ๋๋ ๊ทธ๊ฒ ์์ด๋ ์ข SOL์ ๋๋ค.
๋๋ ๋ค๋ฅธ ๊ฒ์ ์ฐพ๊ณ ์๋ ๊ฒ์ ์ฐ์ฐํ ๋ฐ๊ฒฌํ๊ณ , ๋จ์ง ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ง๋ค๊ณ ์ถ์๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ ๊ฐ๋ฐ์๋ค์ด ๊ทธ๋ค์ ์๋น์ค์์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํด์ผ ํ๋์ง๋ฅผ ๊ฐ์ฅ ์ ์ ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. docker-compose.yml ํ์ผ์ด ์์ ์๊ณ ์ด๋ฆ์ด ์ง์ ๋ ๋ณผ๋ฅจ์ด ์ฌ์ฉ ๋์๊ธฐ ๋๋ฌธ์ ๋ฐฑ์ ์ ๋ต์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ค์์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ด์ docker-compose.yml์ ์์ฝ ๋ ์์ ๋๋ค.
version: '2'
services:
gitlab:
image: gitlab/gitlab-ce:latest
restart: always
ports:
- "5555:5555"
volumes:
- gitlab_config:/etc/gitlab
- gitlab_logs:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
- certificates:/etc/gitlab/ssl
- registry_data:/var/opt/gitlab/gitlab-rails/shared/registry
gitlab-runner:
image: gitlab/gitlab-runner:latest
restart: always
volumes:
- certificates:/etc/gitlab-runner/certs
- /var/run/docker.sock:/var/run/docker.sock
volumes:
gitlab_config:
driver: local
gitlab_logs:
driver: local
gitlab_data:
driver: local
certificates:
driver: local
registry_data:
driver: local
๋ณผ๋ฅจ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํ ์ ์์ผ๋ ค๋ฉด busybox ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ๋ฅดํ๊ธฐ๋ก ๊ฒฐ์ ํ์ง๋ง ์ ์ฐํด์ผํ๊ณ ๊ฐ๋ฐ์๊ฐ ๋ฐฑ์ ํ๋ ค๋ ๋ณผ๋ฅจ ๋ง ์ํํด์ผํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ชจ๋ ๋ณผ๋ฅจ์ ๊ฐ๋ณ์ ์ผ๋ก ๋ฐฑ์ ํ ์ ์์ด์ผํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ชจ๋ docker-compose.yml์ 3 ๊ฐ์ ์๋น์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
boot:
image: busybox
depends_on:
- gitlab
- gitlab-runner
backup:
image: busybox
volumes:
- gitlab_config:/data/gitlab_config
- gitlab_data:/data/gitlab_data
- registry_data:/data/gitlab_data
- /backups/latest:/backup
command: find . -type d -maxdepth 1 -mindepth 1 -exec tar cvf /backup/{}.tar {} \;
working_dir: /backup
restore:
image: busybox
volumes:
- gitlab_config:/data/gitlab_config
- gitlab_data:/data/gitlab_data
- registry_data:/data/gitlab_data
- /backups/latest:/backup
command: find . -type f -iname "*.tar" -maxdepth 1 -mindepth 1 -exec tar xvf {} \;
working_dir: /backup
๋ฐฑ์ ๋ฐ ๋ณต์ ์๋น์ค๋ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค. ๋๋จธ์ง๋ ๋ช ๋ น์ผ๋ก ์ํ๋ฉ๋๋ค. ๋ฐฑ์ ๋๋ ๋ณต์ ํ ๋ณผ๋ฅจ์ ์ ํํ ์ ์๋๋ก ์ฝ๊ฐ์ ๊ตฌ์ฑ์ ์ถ๊ฐ ํ ๊ณํ์ด์ง๋ง ์ง๊ธ์ ๋ชจ๋ ์์ ์ ์ํํฉ๋๋ค.์ด ๋ ์๋น์ค๊ฐ ๋ชจ๋ docker-compose์์ ์์๋๋ ๊ฒ์ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ up ๋ช ๋ น์ ์ฌ์ฉํ๋ ค๋ฉด ์ํ๋ ๋ชจ๋ ์๋น์ค๋ฅผ ์ง์ ํด์ผํ์ต๋๋ค. ์ง๋ฃจํ ์ ์์ต๋๋ค ... ๊ทธ๋์ boot๋ผ๋ ๋๋ฏธ ์๋น์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์คํํด์ผํ๋ ๋ชจ๋ ์๋น์ค์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋์ปค ๊ตฌ์ฑ.
์ฌ๊ธฐ์๋ ์์ ํดํน์ผ๋ก ๊ฐ๋ ์ฐจ ์์ง๋ง docker-compose up backup
๋ฅผ ์ฝ๊ฒ ์คํํ์ฌ ํธ์คํธ์ / backups / latest์ ๋ฐฑ์
์ ์ ์ฅํ๊ณ ๊ฑฐ๊ธฐ์์ ๋ฒ์ ๊ด๋ฆฌ / ์ ๋ฆฌ ๋
ผ๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋น์ทํ ๊ฒ์ ๋ฌ์ฑํ๋ ค๋ ์ฌ๋์๊ฒ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.ํ์ง๋ง ๊ฒฐ๊ตญ docker-compose์๊ฒ ๋ ์๋น์ค๋ฅผ ๋ถํ ํ์ง ๋ง๋ผ๊ณ ๋งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ ๋ฒ์งธ ์๋น์ค๊ฐ ํ์ํ์ง ์๊ณ docker-compose๊ฐ ๋ณต์กํด์ง๋๋ค. ๋ช ๋ น.
๊ฐ๋ฐ ์ค์๋ ํ์ฌ 4 ๊ฐ์ docker-compose ํ์ผ์ด ์์ต๋๋ค.
docker-compose.yml
: redis, MySQL, php-fpm, Laravel ํ ํ๋ก์ธ์, nginx, Solr ๋ฑ ์ฑ์ ์์ ํ ์ด์ํ๋ ๋ฐ ํ์ํ ํต์ฌ ์๋น์ค๋ฅผ ์ ์ํฉ๋๋ค.docker-compose-utils.yml
: ์ผ๋ฐ์ ์ผ๋ก ์์ ์๋น์ค์ ํจ๊ป ์คํ๋๋ gulp, npm, artisan (Laravel), composer, redis-cli์ ๊ฐ์ ๊ฐ๋ฐ ์์
์ ์คํํ๋ ๋ฐ ํ์ํ ์ ํธ๋ฆฌํฐ ์๋น์ค๋ฅผ ์ ์ํฉ๋๋ค.์ด ์ค์ ์ Docker ์ธ๋ถ์์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ํ ์ต์ํ์ ์ข ์์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ ์๋ํฉ๋๋ค. ๋จ์ ์ ๊ฐ๋จํ ์ ํธ๋ฆฌํฐ๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ .yml ํ์ผ์ ์ง์ ํ๋ ๋ฐ ํ์ํ ๋ค๋ฃจ๊ธฐ ํ๋ ๋ช ๋ น ์ค์ ๋๋ค.
์ฐ๋ฆฌ๋ macOS, Windows ๋ฐ Linux์์ ๊ฐ๋ฐํฉ๋๋ค. ๋ํ ๋ง์ ๊ฐ๋ฐ ์์
์๋ ์ผ์ข
์ ๋งค๊ฐ ๋ณ์ํ (์ : DB ๋ง์ด๊ทธ๋ ์ด์
์์ฑ, ์์ฒด ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ composer / artisan / npm ๋ช
๋ น ์คํ)๊ฐ ํ์ํ๋ฏ๋ก schmich/runx
๋ฅผ ์ ๋ก ์ค์น ๊ต์ฐจ๋ก ์์ฑํ์ต๋๋ค. ํ๋ซํผ ํ์คํฌ ๋ฌ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ณตํต ๊ฐ๋ฐ ํ์คํฌ๋ฅผ ๋ฌถ์ต๋๋ค.
์๋ฅผ ๋ค์ด runx migrate : make create_some_table ์ ์ฌ์ฉํ์ฌ docker-compose -f docker-compose.yml -f docker-compose-utils.yml -f docker-compose-dev.yml -f docker-compose-utils-dev.yml run --rm artisan migrate:make create_some_table
๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์คํํ๊ฑฐ๋ runx npm older ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋๋ JS ์ข
์์ฑ์ ๋ณผ ์ ์์ต๋๋ค.
์์์ ์ธ๊ธ ํ dobi
์ฌ์ฉํ์ง ์์์ง๋ง runx
์ (๋) Docker ํ๊ฒฝ์ ๋ ์ ํฉํ์ง๋ง ์ ์ ์ ์ผ๋ก ๋น์ทํ๊ฒ ๋๊ปด์ง๋๋ค. ๊ถ๊ทน์ ์ผ๋ก ํ์๋ ์๋น์ค ์์ฒด์ ๊ฐ๋ฐ์ ํ์ํ ์ ํธ๋ฆฌํฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ๊ณณ์์ ์ข
์์ฑ์ ํผํ๊ณ ์ถ์ต๋๋ค.
์ด๋ค ์์์ด๋ผ๋? ์ด ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ ๋ง ์ข์ ๊ฒ ๊ฐ์์! ์คํํด์ผ ํ ์๋น์ค๋ฅผ ์ง์ ํ ์์๋ default
์ ๊ฐ์ ์ต์์ ๊ตฌ์ฑ์ ์๋ฃจ์
์ ํฌํํฉ๋๋ค.
boot
๋๋ฏธ ์๋น์ค๋ ์ข์ง๋ง ํ๋ก์ธ์ค๋ฅผ ํฌ ๊ทธ๋ผ์ด๋์ ๋๋ ๊ฒ์ ์ ํธํ๋ฏ๋ก์ด ์์
์ ๋ง์น๋ฉด ํฐ๋ฏธ๋์ ๋ซ์ ๋ชจ๋ ๊ฒ์ ์ค๋จ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๋ ฅ์ ์ฒจ๋ถํ๋ ๊ฒ๋ ์ข์ผ๋ฉฐ ๋๋ฏธ ์๋น์ค์์๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
noboby๊ฐ .env ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์ฃผ์์ ๋ฌ์์ผ๋ฏ๋ก ๋ค์์ ๋ด ๊ฒ์ ๋๋ค.
4 ๊ฐ์ compose ํ์ผ์ด ์์ต๋๋ค : docker-compose.yml, docker-compose.local.yml, docker-compose.prod.yml ๋ฐ docker-compose.ci.yml. ๊ฐ ํ๊ฒฝ๋ง๋ค ๋ค๋ฅธ .env๊ฐ ์์ต๋๋ค.
CI .env:
COMPOSE_PROJECT_NAME=foo
COMPOSE_FILE=docker-compose.yml:docker-compose.ci.yml
WEB_PORT=8081
...
Test/dev/etc .env:
COMPOSE_PROJECT_NAME=foo
COMPOSE_FILE=docker-compose.yml:docker-compose.local.yml
WEB_PORT=80
...
๋ฑ๋ฑ...
์ฌ์ฉ์ ๋ฐ / ๋๋ ์คํฌ๋ฆฝํธ๋ ํ๊ฒฝ์ด ์ด๋ฏธ ๊ฐ๋ณ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ์ฌ์ฉํ ์์ฑ ํ์ผ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
ํ์ง๋ง ๊ฒฐ๊ตญ ์คํํ ์ ์ง ๊ด๋ฆฌ ์ธ์คํด์ค๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ docker-compose.yml ๋ด์์ ๊ตฌ์ฑ ํ ์ ์์ผ๋ฉฐ ํ ๊ฐ์ง ํด๊ฒฐ์ฑ ์ docker-compose.worker.yml์ ๋ง๋ค๊ณ ๋ณ๊ฒฝ๋๋ 3 ๊ฐ์ "-f"์ต์ ์ผ๋ก ๋ช ๋ น ์ค์ ์คํํ๋ ๊ฒ์ ๋๋ค. ๊ฐ ํ๊ฒฝ์. ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ์ด๋๊ธฐ ์ฌ์ด ์ค๋ฅ์ ๋๋ค.
๋ด๊ฐ ์ฐพ์ ํด๊ฒฐ์ฑ ์ "worker"๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ yml ํ์ผ์ ๋ฃ๊ณ ์์ .env ํ์ผ์์ด ๋๋ ํ ๋ฆฌ์ ์ฐ๊ฒฐํ๊ณ ๋น docker-compose. [ci | local | prod] .yml ํ์ผ์ ๋ง๋๋ ๊ฒ์ ๋๋ค (๊ทธ๋ ์ง ์์ผ๋ฉด COMPOSE_FILE ๋ณ์ ๊ฐ ๋ณ๊ฒฝ).
์ด๊ฒ์ ์ ์๋ํ์ง๋ง ์ต์ ์ด ์๋๋๋ค. OP์ ๋ค๋ฅธ ์๋ฃจ์ ์ ์๋ง์ด๋์ง ์๊ณ ์ด๊ฒ์ ํด๊ฒฐํ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์๋ ๋ ผ์, ๋ง์ ์์ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ด๋ฆฐ์ด ๋ฌธ์ ์ ๋ํด ์์ฃผ ์ค๋ณต๋๋ ๋ฌธ์ ๊ฐ ์๋ค๋ ์ฌ์ค์ "๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋ ์๋น์ค ์ ์"์ ๋ํ ๊ฐ๋ฅ์ฑ์ ๋ํ ๋ง์ ์ฌ์ฉ์์ ์ค์ ์๊ตฌ๊ฐ ์์์ ๋ถ๋ช ํ ๋ณด์ฌ์ค๋๋ค. ".
๋ฐ๋ผ์ ์ ๋ ์ฌ๊ธฐ์ ๋ ผ์๋ฅผ _if_ ๋ ๋ง์ด ๊ตฌํํด์ผํ๋ ๊ฒฝ์ฐ์์ _ ์ด๋ป๊ฒ ๊ตฌํํด์ผ ํ๋์ง๋ฅผ _๋ก ์ฎ๊ธฐ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ ๋ชจ๋ ๋์ ํ ์ ์์๊น์ ?
_how_์ ๊ด๋ จํ์ฌ์ด ์ป์ ์์๋ @bfirsh๋ ์คํ๋ ์ฝ๋ฉํธ์ ๋ช ๊ฐ์ง ์ต์ ์ ๋์ด :
1) ์ฌ์ฉ์์๊ฒ ๋ณ๋์ Compose ํ์ผ ์ฌ์ฉ ๊ถ์ฅ
์ด ์ฌ์ฉ ์ฌ๋ก์ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ์ผํ ์๋ฃจ์
์
๋๋ค. ๊ทธ๋ฌ๋ ์์์ ์ธ๊ธํ๋ฏ์ด ๊ธด ๋ช
๋ น ์ค์ ์๋์ผ๋ก ์
๋ ฅํ๊ณ ์คํํ ๋ช
๋ น์ ํฌํจ ํ Compose ํ์ผ์ ๊ธฐ์ตํด์ผํ๊ธฐ ๋๋ฌธ์์ด ๊ฒฝ์ฐ์๋ ๋ ๋ง์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ฌผ๋ก CI ์ค์ ๋๋ ํ๋ก๋์
์ ๋ํ ์๋ํ ๋ ๋ฐฐํฌ์์๋ ๋ช
๋ น ์ค์ ํ ๋ฒ๋ง ์ ์ํ๋ฉด๋๊ณ ์๋์ผ๋ก ์
๋ ฅ ํ ์ ์์ผ๋ฏ๋ก ์ด๋ ๋ฌธ์ ๊ฐ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ ์ค๋ก์ง Compose ์์ฒด์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก ์ค ํ๋ ์ธ docker-compose ๋งค๋ด์ผ ์ ๋ฐ๋ผ ์๋ํ๋์ง ์์ ํ๊ฒฝ, ์ฆ ๊ฐ๋ฐ์์์ ํธ์์ ๊ดํ ๊ฒ์
๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ๋ฅผ ์์ํ ์์๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. Compose๋ ์ฌ๋ฌ ํ์ด์ง์ "๊ฐ๋ฐ์ ์์ ์๋ด์"๋ฅผ ๋จ์ผ ์ปดํจํฐ์์ ์ฝ์ ์์๋ Compose ํ์ผ๊ณผ ๋ช ๊ฐ์ง ๋ช ๋ น์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
๋ก์ปฌ ์ค์ ์ ์ด๊ธฐํํ๊ธฐ ์ํด docker-compose -f docker-compose.yml -f docker-compose-utils.yml run init
์ ๊ฐ์ ๊ฒ์ ์
๋ ฅํด์ผํ๋ ๊ฒ์ _ ํธ๋ฆฌํจ _์ด ์๋๋ผ _ โโ์ฌ๋ฌ ํ์ด์ง์ "๊ฐ๋ฐ์ ์์ ๊ฐ์ด๋"_์์ ์ฐพ์ ์์๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค.
์ฌ๊ธฐ์์ ์ต์ 1b)๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
์ฌ์ฉ์๊ฐ ๋ณ๋์ Compose ํ์ผ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ํผ ์คํฌ๋ฆฝํธ / ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํฉ๋๋ค.
์ด๋ฅผ ์ํด ์ถ๊ฐ ๋๊ตฌ ๋ฐ ์ข
์์ฑ์ ๊ฐ์ ธ์์ผํ๋ค๋ฉด ์ ์ฒ์์ docker-compose
๋ฅผ ์ฌ์ฉํฉ๋๊น? docker-compose
๋ ๋ชจ๋ ์์
์ ์ด๋ก ์ ์ผ๋ก ์ฌ์ฉ์ ์ง์ ์
ธ ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ docker
ํด๋ผ์ด์ธํธ๋ก ์ง์ ์ํ ํ ์๋ ์์ต๋๋ค.
ํ์คํ ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ docker-compose
์ ์ฃผ์ ์ด์ ์ ํ์ธํฉ๋๋ค (ํ๋ก์ ํธ๋ฅผ ๋ณต์ ํ๊ณ ์ฌ๊ธฐ์์ docker-compose.yml
docker-compose up
๋ฅผ ํ์ธํ๊ณ ์์ํ๋ ค๋ฉด
2) ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋๋ก ์๋น์ค์ ์ต์ ์ถ๊ฐ
3) ๊ธฐ๋ณธ ์๋น์ค ์ ์๋ฅผ์ํ ์ต์์ ๊ตฌ์ฑ ์ต์ ์ถ๊ฐ
์ด ๋ ์ต์
์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํฉ๋๋ค. ํ๋์ compose ํ์ผ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ด์ผํ๋ ์๋น์ค๋ฅผ ์ ์
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋จ์ผ ์์ฑ ํ์ผ์ "์ผํ์ฑ ์๋น์ค"๋ณด๋ค ๊ธฐ๋ณธ ์๋น์ค๊ฐ ๋ ๋ง๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๋ค๋ฅธ ๋ชจ๋ ์๋น์ค๋ฅผ ํ์ดํธ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ณ ๊ธฐ๋ณธ ์๋น์ค๊ฐ ๊ฐ์ ธ์ฌ ๋๋ง๋ค ํ์ดํธ๋ฆฌ์คํธ๋ฅผ ์
๋ฐ์ดํธํด์ผํ๋ ๊ฒ๋ณด๋ค ํ ์๋น์ค๋ฅผ ๋ธ๋๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค. ์ถ๊ฐ ๋๋ ์ ๊ฑฐ. ๋ํ ์ต์
2)๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์์ฑ ํ์ผ์ ๋ณํฉํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์
๋๋ค.
4) ์๋น์ค์ ๊ฐ์ ๊ฐ๋ ์ ์ถ๊ฐํ๋ ์ผํ์ฑ ๋ช ๋ น ( "์คํฌ๋ฆฝํธ", "์์ "๋ฑ)์์ํ ๊ฒ์ ๋๋ค.
์ต์ 4)๋ ์ต์ 2) ๋๋ 3)์ ์ ๋ฌธ ํ์ผ ๋ฟ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์์ ๋๋ถ๋ถ์ ์์์ ์ํ๋ ์ผํ์ฑ ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์๋น์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์๋๊ณ ์ผ๋ฐ ์๋น์ค์ฒ๋ผ ๋ ๋ง๊ฑฐ๋ ์ ์ ์์ ์ ์ํํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์์ต๋๋ค. (๋๋ "์๋น์ค"์ ๋ํ ์ค์ํ ์ฐจ์ด์ ์ ๋์ณค์ต๋๊น?).
๊ทธ๋์ ์ ์๊ฐ์๋ ์ต์
2)๊ฐ ์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ข์ ์ ํ์
๋๋ค. ์๋ํ๋ฉด ์ต์ํ์ ๋ณ๊ฒฝ์ด ํ์ํ์ง๋ง ๋์์ ์ฌ๊ธฐ์ ์ธ๊ธ ๋ ๋๋ถ๋ถ์ (๋๋ ์ ๋ถ?) ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ง์กฑ์ํฌ๋งํผ ์ ์ฐํ๊ณ ๋์์ ์ฌ์ฉํ๊ธฐ ๋งค์ฐ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ต์
3) ๋๋ 4)์ ๊ฐ์ ํญ๋ชฉ์ด ์
์คํธ๋ฆผ์ผ๋ก ๋ณํฉ๋๋ ๊ฒ์ ๋ณด๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์์ 1 ๋
๋๊ฒ ๋
ผ์ํ ํ, ์ธ์ ๋๋ ์ผ์ด๋ ์ง์ ๋ํ ์ผ์ ์ด ์์ต๋๊น ??
๋๋ ์ต์ 2๊ฐ ์๋ง๋ ๊ฐ์ฅ ๋ ์นจ์ต์ ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ต์ 4๊ฐ ์ ๊ณต ํ ์์๋ ์ ์ผํ ๊ธฐ๋ฅ์ ๊ธฐ์กด ์ปจํ ์ด๋์์ ๋ช ๋ น์ ์คํํ๋ ๊ธฐ๋ฅ์ ๋๋ค (๋์ปค ์คํ ๋ฉ์ปค๋์ฆ ์ฌ์ฉ). ์๋ฅผ ๋ค์ด ๋ด๊ฐ ์ํ๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ๋จ์ ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒ๋ฟ์ด๋ผ๋ฉด ๋ด ์ฑ์ ์คํํ๋ ์ปจํ ์ด๋๊ฐ ์ด๋ฏธ ์์ผ๋ฉด ๋ณ๋์ ์ ์ฒด ์ปจํ ์ด๋๋ฅผ ๋ง๋ค ์ด์ ๊ฐ ์์ ์ ์์ต๋๋ค. ์ฆ, ์ปจํ ์ด๋๋ ๊ฐ๋ณ๊ณ ์ต์ 2์ ์๋ฒฝํ๊ฒ ๋ง์กฑํ ๊ฒ์ ๋๋ค.
@MadWombat ์ต์ 4์ ๋ํด์๋ ๊ฐ์ ๋๋์ด
@mathroc ์ ๋ docker exec๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ 4๋ฅผ ์ธ๊ธํ์ต๋๋ค. @acran ์ด ์ต์ 2์ 4 ์ฌ์ด์ ์ค์ํ ์ฐจ์ด์ ์ด ์๋์ง ๋ฌผ์ ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ชฉ์ ์ ์ํด ๋ค๋ฅธ ์ ์ฌํ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ ธ ์ค๋ ๋์ ๊ธฐ์กด ์ปจํ ์ด๋. ์ผ๋ถ ์๋น์ค ๋๋ ๊ธฐ์กด ์ปจํ ์ด๋์์ ์ด๋ฏธ ์ฌ์ฉ์ค์ธ ๋ค๋ฅธ ์ ํ๋ ๋ฆฌ์์ค์ ๋ํ ์ ํ๋ ์๊ตฌ ์ฐ๊ฒฐ์ด์๋ ์๋๋ฆฌ์ค๊ฐ์์ ์ ์์ง๋ง ํ๋๋ ์๊ฐํ ์ ์์ต๋๋ค.
์ต์ 4๊ฐ ์ ๊ณต ํ ์์๋ ์ ์ผํ ๊ธฐ๋ฅ์ ๊ธฐ์กด ์ปจํ ์ด๋์์ ๋ช ๋ น์ ์คํํ๋ ๊ธฐ๋ฅ์ ๋๋ค (๋์ปค ์คํ ๋ฉ์ปค๋์ฆ ์ฌ์ฉ).
์ด๋ ์๋น์ค์ ๋ค๋ฅธ ์๋ก์ด ์ต์์ ๊ฐ๋
์ ๋์
ํ๋ ๊ฒ์ ์ ๋นํํ๊ณ ์๊ตฌํ๋ ์๋ก์ด ์ฌ์ฉ ์ฌ๋ก์
๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ์กด์ฌํ๋ ์๋น์ค ์ปจํ
์ด๋ ๋ด์์ docker exec
๋ฅผ ํตํด ๋ช
๋ น์ ์คํํ ํ์๊ฐ์๋ ํ ๊ธฐ์กด ์๋น์ค ๊ฐ๋
๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ชฉ์ ์ ์ํด ๋ค๋ฅธ ์ ์ฌํ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ ธ ์ค๋ ๋์ ๊ธฐ์กด ์ปจํ ์ด๋์์ ๋ช ๋ น์ ์คํํ๋ ค๋ ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๊ฐ ํด๋ผ ์๋ ์์ต๋๋ค.
๋ด๊ฐ ์๊ฐํ ์์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒฝ์ฐ๋ ์ปจํ ์ด๋ ๋ด์ ๊ตฌ์ฑ ํ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ๋ค์๋ก๋๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค. # 4096์ @mathroc ์์ ์ฌ์ฉ :
version: "2"
services:
my_service:
image: my/service
shortcuts:
start-debugging:
service: my_service
command: echo "debug=true" > /etc/myapp/conf.d/debug.conf && mydaemon --reload-config
stop-debugging:
service: my_service
command: echo "debug=false" > /etc/myapp/conf.d/debug.conf && mydaemon --reload-config
์ด ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ง๋ง # 4096์๋ ์์ฒด ์ ์ค ์ผ์ด์ค๊ฐ ์์ผ๋ฉฐ ์ต์ 4)๋ฅผ ๊ฐ์ฅ ์ ์ด๋ํ ์ ์์ต๋๊น?
1 ๋ ์ด ๋๋ ์๊ฐ์ด ์ง๋ฌ๊ณ ์ฐ๋ฆฌ๋ ๋ ์ด์ ๊ฒฐ์ ์ ๋ด๋ฆฌ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค. @bfirsh ๋ ์คํ์ผ์ ์ ํํ๊ณ ํจ๊ป ๊ฐ์ผํฉ๋๋ค.
+1
+1ํ๋ฉด ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ auto-start: false
๋๋ enabled: false
์ ๊ฐ์ ์ต์
2์ ๋ํ ๋ ๋ค๋ฅธ +1.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ์๋น์ค๋ฅผ ํ์ฅํ๋ ๊ฒ์
๋๋ค. depends_on
์ค์ ๋ ์๋น์ค๋ ํ์ฅ ํ ์ ์์ผ๋ฏ๋ก ์๋น์ค ํ
ํ๋ฆฟ์ ์ ์ํ ๋ค์ ์ฌ๊ธฐ์์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ํ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ถ๋ช
ํ ํ
ํ๋ฆฟ์ ๋น๋ํด์ผํ์ง๋ง ์๋์ผ๋ก ์คํํด์๋ ์๋ฉ๋๋ค.
๋๋ง์ ์๋ฃจ์
์ ๋ง๋ค์๊ณ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ง ๋ฒ ํ ๋ฒ์ ์
๋๋ค. :)
์ฌ๊ธฐ์ ๋ง์ ํ๋ฅญํ ์ต์ ์ด ์์ต๋๋ค. ๊ธฐ๋ฅ์ ๋ํ ํ์์ฑ์ ํ์ค์ ๋๋ค.
์ต์ 2๊ฐ ๋ถ๋ช ํ ๋ ์ธ๊ธฐ๊ฐ ์์ต๋๋ค.
1-> 4
2-> 52
3-> 3
4-> 10
์ต์ 2์ ๋ํ ๋ ๋ค๋ฅธ ๐
์ด๊ธฐ ์ง์ ์ ์ด๋ ๋จ์ํ ๋ฐํํ๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ "๋๊ตฌ"์๋น์ค์์์ด ์์ ์ ์๋นํ ์ฝ๊ฒ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์์ด ์๋น์ค๋ฅผ ๋์ฒด ๋ช ๋ น์ผ๋ก ์คํํ์ฌ ์ํ๋ ์์ ์ ์ํํฉ๋๋ค (์ : ํ ์คํธ ๋๋ ๋ฐ์ดํฐ ์๋). ์
docker-compuse up -d
docker-compose run tools tests
์, ๋๊ตฌ ์๋น์ค๋ docker-compose ps
์์ "์ค์ง๋จ"์ผ๋ก ํ์๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ์ ๋ค์ผ ์ ์๋ค๋ฉด https://github.com/docker/compose/pull/2051 ์ ๋ค์ค ํ์ผ ์ต์
์ด ์๋ํฉ๋๋ค. ์
docker-compose -f docker-compose.yml -f docker-compose-tools.yml up -d
docker-compose -f docker-compose-tools.yml logs -f tools
๋ง์ ์ค์ผ์คํธ๋ ์ด์ ๋์ฐ๋ฏธ๊ฐ ์ด๋ฌํ ์๊ตฌ๋ฅผ ์ํด ์์ฑ๋๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋๋ ๊ทธ ์ค ํ๋์ ๋ํด์๋ ์์ ์ํ๊ณ ์์ต๋๋ค. :).
๊ฐ์ธ์ ์ผ๋ก ์ ๋ ์ถฉ๋ถํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค (์์ ๋ ๊ฐ์ง, ์ง์ ์ / ์ปจํ ์ด๋๋ก ์ฐฝ์๋ ฅ์ ๋ฐํํ๊ณ / ๋๋ ์ ธ ๋ณ์นญ / ๋์ฐ๋ฏธ์ ํจ๊ป ๋ค์ค ํ์ผ ์ ๊ทผ ๋ฐฉ์ ์ฌ์ฉ). ์์ฑ์ ๊ฐ๋จํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค.
@briceburg ๋ ์ ์ ๋ ผ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ํ ํ ์์๋ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. ์ฌ๊ธฐ ์ฌ๋๋ค์ด ๋ฌ์ฑํ๊ณ ์ํ๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ docker-compose์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ๋๋ฌ์ด ํดํน์ ๋๋ค.
ํธ์์ฑ์ ๊ดํ ๊ฒ์
๋๋ค. cli์ ์ง์ docker-compose -f docker-compose.yml -f docker-compose-tools.yml up
๋ฅผ ์
๋ ฅํ์ง ์์๋๋๋ฉฐ, docker-compose run tools tests
์ธ์ง docker-compose run utils tests
์ธ์ง ๊ธฐ์ตํ ํ์๊ฐ ์์ต๋๋ค. _ ์ฌ๋ฌ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ "๊ฐ๋ฐ์ ์์ ์๋ด์"_ ๋์ ๊ฐ๋ฐ์๋ฅผ์ํ ํตํฉ๋๊ณ ๊ฐ๋จํ ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค.
์ด ๋ฌธ์ ์ _any_ ํผ๋๋ฐฑ์ ์ ๊ณตํ์๊ธฐ ๋ฐ๋๋๋ค ์ : ๋ค์, @dnephin, @bfirsh์ CCing? docker-compose
์ ๋ํ ํฅํ ๋ก๋๋งต์์ ์ด์ ๊ฐ์ ๋ด์ฉ์ ๋ณผ ์ ์๋ค๋ ํฌ๋ง์ด ์์ต๋๊น?
๊ฐ๋จํ ํ๊ฒฝ์ ๊ฒฝ์ฐ @briceburg ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ฉ ๋ ์ ์์ง๋ง ๋๋ก๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ด ์ค์ ์๋ณด์ญ์์ค.
rancher<strong i="7">@rancher</strong>:~/servers/sgi/docker$ ls -l
total 64
-rwxrwxr-x 1 rancher rancher 303 Dec 8 20:05 cleanup.sh
drwxrwxr-x 3 rancher rancher 4096 Dec 16 15:26 conf
drwxrwxrwx 4 rancher rancher 4096 Dec 15 20:03 data
-rw-rw-r-- 1 rancher rancher 94 Dec 14 19:40 docker-compose.amt.yml
-rw-rw-r-- 1 rancher rancher 295 Dec 8 20:05 docker-compose.auth.yml
-rw-rw-r-- 1 rancher rancher 332 Dec 8 20:05 docker-compose.ci.yml
-rw-rw-r-- 1 rancher rancher 112 Dec 8 20:05 docker-compose.dbext.yml
-rw-rw-r-- 1 rancher rancher 347 Dec 14 19:40 docker-compose.dbint.yml
-rw-rw-r-- 1 rancher rancher 688 Dec 15 16:31 docker-compose.full.yml
-rw-rw-r-- 1 rancher rancher 81 Dec 8 20:05 docker-compose.local.yml
-rw-rw-r-- 1 rancher rancher 288 Dec 15 16:31 docker-compose.yml
-rwxrwxr-x 1 rancher rancher 721 Dec 14 19:40 redeploy.sh
-rwxrwxr-x 1 rancher rancher 861 Dec 8 20:05 setup.sh
-rwxrwxr-x 1 rancher rancher 66 Dec 8 20:05 shutdown.sh
-rwxrwxr-x 1 rancher rancher 269 Dec 14 19:40 startup.sh
drwxrwxr-x 2 rancher rancher 4096 Dec 14 19:40 worker
'๊ธฐ๋ณธ์ ์ผ๋ก ์์ํ์ง ์์'์ปจํ
์ด๋๋ฅผ ๊ตฌ์ฑํ๋ worker
๋๋ ํฐ๋ฆฌ์์๋ ํ์ผ ์ธ์ 8 ๊ฐ์ compose ํ์ผ (์ฌ๋ฌ ์กฐํฉ์ผ๋ก ์ฌ์ฉ)์ด ์์ต๋๋ค. worker
๋๋ ํฐ๋ฆฌ (๋ถ๋ชจ์ ์ฐ๊ฒฐ๋ .env ํ์ผ๊ณผ ๋ถ๋ชจ์ .env COMPOSE_FILE ๋ณ์๋ฅผ ์ค์ํ๊ธฐ ์ํด ๋น์ด์๋ compose ํ์ผ ํฌํจ)๋ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ง๋ง, ์ด์ ๋ํ ํด๊ฒฐ์ฑ
์ด ์์ผ๋ฉด ์ ์ถ์ด ํจ์ฌ ์ฌ์ ์ง ๊ฒ์
๋๋ค. ์ด ๋ฌธ์ .
@vipseixas ํ์ผ ๋ชฉ๋ก์์์ด ์๋ฃจ์ ์ ์จ์ ํจ์ ์ธก์ ํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ์, ์๋น์ค๋ฅผ ์๋ ์์ํ์ง ์๋ ๊ธฐ๋ฅ์ด ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์๋ ์์์ ์ ํธํ์ง _ ์๋ _ ์๋น์ค์ ๋ํด ์๋ฌด๊ฒ๋ํ์ง ์๋ ๊ธฐ๋ณธ ์ง์ ์ / ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ํ ์ข ๋ฃ๋๋ฉฐ ํ์ docker-compose ์คํ์ ํตํด ๋์ฒด ๋ช ๋ น์ผ๋ก ํด๋น ์๋น์ค๋ฅผ ์คํํฉ๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ ์ ์ข ์ ์๋น์ค / ์ปจํ ์ด๋์ ๋ํ ์ํ ๊ฒ์ฌ๊ฐ ํต๊ณผํ๋์ง ํ์ธํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฌํ ํ ์คํธ๊ฐ ์คํ๋๊ธฐ ์ ์ jenkins๊ฐ ์๋ ์ค์ด๊ณ ์คํ ์ค์ ๋๋ค (: 8080 ๋ฑ์ ์ฐ๊ฒฐ ํ์ฉ). ๊ณผ๊ฑฐ์๋ ์ด๊ฒ์ ์ํด dockerize๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๋ด๊ฐ ์์ ์ด์์ ์ ์ํ๋ค๋ฉด ํ๊ฒฝ ๋ณ์ (์ : DOCKER_COMPOSE_PROFILE = "tests")๋ฅผ ํตํด ์์ฑ ํ๋กํ์ ์ค์ ํ๊ณ ์๋น์ค๊ฐ ํ๋กํ์ ์ข ์๋๋๋ก ํ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ ์๋น์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก "๊ธฐ๋ณธ๊ฐ"์ผ๋ก ์ค์ ๋ฉ๋๋ค. "ํ๋กํ ๋๋ ๋ฌด์์ด๋ . ๋ํ ๋ค๋ฅธ ์๋น์ค์ ์์กดํ๋ ์๋น์ค๋ ํด๋น ์๋น์ค์ HEALTHCHECK์ _ ์ข ์ _๋๋๋ก ํ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ๋ญ๊ฐ
app:
image: myapp:v1
tests:
image: myapp:tests
dependencies:
- profile: "tests"
- service: "app"
healthcheck: true
# run the things
docker-compose up -d
# test the things
DOCKER_COMPOSE_PROFILE="tests" docker-compose up -d
DOCKER_COMPOSE_PROFILE="tests" docker-compose logs -f
์ต์ 2์ ๊ฒฝ์ฐ +1.
์ฌ๊ธฐ ๋ง์ ์ฌ๋๋ค์ด ํฅ๋ฏธ๋ก์ด ์๋ก์ด ๊ธฐ๋ฅ์ ์ ์ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฌธ์ ์ ํต์ฌ์ ๋ฌด์์ ๋๊น? ๊ฐ๋ฅํ ํ ๊ฐ๋จํ๊ฒ ์ ์งํ๊ธฐ ์ํด ํฌํํฉ๋๋ค.
ํ์ฌ ์ํ์์ ์ฐ๋ฆฌ๋ docker-compose.yml์ ๋ชจ๋ ์๋น์ค๊ฐ docker-compose up
์์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ ์์ฒด ์ปค์คํ
๋ถํธ ์คํธ๋ฉ ์คํฌ๋ฆฝํธ, ๋ฉ์ดํฌ ํ์ผ, ๋น๋ ๋๊ตฌ ๋ฑ์ผ๋ก ์์
ํ๊ณ ์์ผ๋ฉฐ ๋คํํ๋ ๋์ปค ๊ตฌ์ฑ ๋ฐ ๋์ปค ๋ชจ๋ ์ฃผ๋ฐฉ ์ฑํฌ๊ฐ '์
'๋๋ฉด ๊ฐ๋ณ ์ปจํ
์ด๋ ๊ด๋ฆฌ๋ฅผ์ํ ๊ด๋ฒ์ํ API๋ฅผ ๋
ธ์ถํฉ๋๋ค.
์ ๊ฐ์ด ๋ ผ์๋ฅผํ๊ฒ ๋ ์ ์ผํ ํ์๋ ์ ๊ฐ ์ ์ํ ์๋น์ค ์ค ํ๋๊ฐ ์ด๋ค ์ด์ ๋ก ๋ ๊ธฐ๋ณธ์ ์ผ๋ก '์ 'ํ๋ ค๋ ๊ฒ์ด ์๋์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ ๋ชจ๋๋ฅผ ์ํด "์์ฑ"ํ ์์๋ ๊ฐ์ฅ ๊ฐ๋จํ ๊ธฐ๋ฅ์ ๋ฌด์์
๋๊น? ์๋น์ค๊ฐ autostart: false
์ง์ ํ ์์๋ docker-compose.yml ์ฌ์ ( @bfirsh ์๋ ์์ด๋์ด 2 ๋ฒ)์ ๋ํ ์์ ์
๋ฐ์ดํธ์
๋๋ค.
๋๋ "๊ทธ๋ฅ ์ฐ๋ฆฌ๋ฅผ ์ํด ๋ญ๊ฐ๋ฅผ ํด์ค, ๊ฐ์ฌํฉ๋๋ค."์ ํฌํํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํฌํํฉ๋๋ค. ์ด์ ์ต์ํ ํ๋์ ๋ต๋ณ์ด ํ์ํฉ๋๋ค. 4 ํ๋๋!
์ฐ๋ฆฌ ๋ชจ๋๋ฅผ ์ํด "์์ฑ"ํ ์์๋ ๊ฐ์ฅ ๊ฐ๋จํ ๊ธฐ๋ฅ์ ๋ฌด์์ ๋๊น? ์๋น์ค๊ฐ autostart : false๋ฅผ ์ง์ ํ ์์๋ docker-compose.yml ์ฌ์ ( @bfirsh ์๋ ์์ด๋์ด ๋ฒํธ 2)์ ๋ํ ์์ ์ ๋ฐ์ดํธ์ ๋๋ค.
๋ค๋ฅธ ๋์๋ณด๋ค ํจ์ฌ ์ข์ต๋๋ค. :)
๋๋ฌด ๊ฐ๋จํฉ๋๋ค.
scale: 0
https://github.com/docker/compose/issues/1661
@ drew-r ๋ญ?
@ jonathanborges1542 docker-compose scale servname=2
์
๋๋ค. docker-compose.yml
ํ์ผ์๋ ์ด์ ์์ํ๋ ํญ๋ชฉ์ด ์์ต๋๋ค.
@ drew-r scale: 0
ํ์ฌ docker ๋ฐ๋ชฌ์๊ฒ SIGTERM / SIGKILL์ ์๋น์ค์ ๋ชจ๋ ์ปจํ
์ด๋๋ก ๋ณด๋ด๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์์ง ์์
์ ์๋ฃํ์ง ์์ ๊ฒฝ์ฐ์๋ ์ ์ง ๊ด๋ฆฌ ์์
์ด ์ข
๋ฃ๋ฉ๋๋ค. ์ด๊ฒ์ด ์์๋๋ ๋์์
๋๋ค. ์ด๊ฒ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ง๊ธ ๋น์ฅ ๋ช
ํํ ํ๋์ ๊ณผ๋ถํ์ํค๋ ๋์ ๊ฒฝ์ฐ๊ฐ ๋ ๊ฒ์
๋๋ค.
@gittycat ์ดํดํฉ๋๋ค.ํ์ง๋ง ์ฌ๊ธฐ์ ์ํ๋ ๊ฒ์ "docker-compose up"์ ์ ๋ ฅํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ค๋น๋ฉ๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ์๋ํ์ง ์์ต๋๋ค.
๋๋ 1 ๋
๋๊ฒ์ด ์ฃผ์ ๋ฅผ ๋ฐ๋ผ์๋ค (๋๋ถ๋ถ์ ํฌ์คํธ๋ ๋์ปค์ชฝ์์๋ค).
๋๋ "์๋น์ค", "๋ณผ๋ฅจ"๋ฐ "๋คํธ์ํฌ"์ ํจ๊ป ์ฌ๋ ์๋ก์ด ์ต์์ "์ง์
"์ด ์ต์ ์ ์ ํ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ OP ๋ชฉ๋ก์ ์ต์
4์
๋๋ค.
Docker ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ ์์ด๊ธฐ๋ํฉ๋๋ค.
https://github.com/docker/docker/issues/23880
@briceburg
ํ์ผ ๋ชฉ๋ก์์์ด ์๋ฃจ์ ์ ์จ ์ ์ฑ์ ์ธก์ ํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
์๋๋ ๋ด๊ฐ ๋ง์ ํ์ผ ์กฐํฉ์ ๊ฐ์ง๊ณ ์๊ณ ์ฌ๋ฌ ๊ฐ์ "-f"์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋์ผ๋ก ์ํํ๊ธฐ์๋ ๋๋ฌด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ธฐ์ํ ๊ฒ์ด ์์ต๋๋ค.
์๋ ์์์ ์ํ์ง ์๋ ์๋น์ค์ ๋ํด ์๋ฌด๊ฒ๋ ์ํํ์ง ์๋ ๊ธฐ๋ณธ ์ง์ ์ / ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ก๋ ํ๋ฉธ์์ ๋ฒ์ด๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ด ํด๊ฒฐ์ฑ ์ ์ ํธํ๋ค. ๋๋ ๊ฒฐ์ฝ "๊ตฌ์ฑ"๋์ง ์์ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ด ํ๊ฒฝ์ ์ค์ผ์ํค๋ ์ธ๋ฐ์๋ ์ค์ง ๋ ์ปจํ ์ด๋๊ฐ ์์ ๊ฒ์ด๋ค. ๊ทธ๋์ ๋ถ๋ชจ ".env"์ ์ฐ๊ฒฐ๋ ".env"๊ฐ์๋ ์์ ์ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ์์ ์ด์์ ์ ์ํ๋ค๋ฉด ํ๊ฒฝ ๋ณ์ (์ : DOCKER_COMPOSE_PROFILE = "tests")๋ฅผ ํตํด ์์ฑ ํ๋กํ์ ์ค์ ํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ด ์ต์ ์ ํด๊ฒฐ์ฑ ์ด ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ ๋ ๊ฐ๋ฐ์๋ค์ด ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํค๋ ๊ฒฝํฅ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ผํ docker-compose.yml์์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ "ํ์ฅ"ํ๊ณ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง ๋ง ์์ํ๋ ค๊ณ ํฉ๋๋ค. ํ์ฌ ํ ๋จ๊ณ์์๋ ์ํ ํ ์ ์์ต๋๋ค. ์ต์ 2๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์์ฑ์ด ์๋ฃ๋๋ "๋น๋ ๋จ๊ณ"๋ฐ "์คํ ๋จ๊ณ"๋ฅผ ๊ฐ๋ ๊ฒ์ด ๋ ์ข๊ณ ๊น๋ํ ๋ฐฉ๋ฒ ์ผ ์ ์์ต๋๋ค. ์ง๊ธ์ ํ๋๊ฐ ์๋ 2 ๊ฐ์ ๋ช ๋ น์ ์คํํด์ผํฉ๋๋ค.
+1 @ drew-r # 1661
์ด ๋ฌธ์ ๋ ์ด๋ ์์ ์์ ๊ตฌํ ๋ ๊ฒ์ธ๊ฐ ์๋๋ฉด ๋จ์ง ๊ฐ๋ฐ์๊ฐํ๊ณ ์ถ์ง ์์ ์ผ์ธ๊ฐ? ์ปค๋ฎค๋ํฐ๊ฐ ๋ค๋ฅธ ์๋ฃจ์ ์ ์ฐพ์ ์ ์๋๋ก ์์๋๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ ๋๋ ์ต์ 2์ ํฌํํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค
์ต์
2์ ๊ฒฝ์ฐ +1.
๊ทธ๋๋ ๋ช
์ ์ ์ข
์์ฑ์ ์กด์คํ ๊น์ ... links
๋ฑ?
docker-compose up [service]
๋ก ๊ฐ์ ธ์ฌ ์๋น์ค๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ํด๋น ์๋น์ค ์ด์ธ์ ์๋น์ค๋ฅผ ์์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ๋๋ญ
๋๋ค.
์ต์ 2์ ๋ํ ๋ ๋ค๋ฅธ ํฌํ์ ๋๋ค. @acran ์ด ์์ฑํ๊ธฐ์ ์ถฉ๋ถํ ์น์ ํ๋ค๋ PR (https://github.com/docker/compose/pull/3047)๋ ์์ผ๋ฏ๋ก ์์ฑ ๊ฐ๋ฐ์์ ๋ ธ๋ ฅ์ ์๋นํ ์ ์ด์ผํฉ๋๋ค. ๊ฒํ ๋งํ๋ฉด๋๊ณ (๋งค์ฐ ์งง๊ณ ๊ฐ๋จํฉ๋๋ค) ์ฝ๋๋ฅผ ์์ฑํ์ง ์์๋๋ฉ๋๋ค.
์์ฑ ๊ฐ๋ฐ์๊ฐ์ด ์์ ์ ์ํ์ง ์๋ ๊ฒฝ์ฐ ํ ๋ฒ์ ํ ๋ฒ๋ง ์ธ๊ธ ํ ๋ค์ ํฐ์ผ์ ๋ซ๊ณ ๋๊ธ์ ๋ง๊ธฐ ์ํด ์ ๊ฐ์ผํฉ๋๋ค.
@msabramo compose๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ปค ์์ง ์์ค์์ ๊ฒฐ์ ๋ ๊ฒ์ ์ํด
์์ฒญ์ Docker ์์ง ์ ์ฅ์ https://github.com/docker/docker/issues/23880 ์์ ์ถ์ ๋ฉ๋๋ค.
๊ทธ๊ฒ์ด ๊ฒฐ์ / ์์
์ด ์์๋๋ ๊ณณ์
๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ข ๊ฒฐ ํ ๊ฒ์ ์ ์ํฉ๋๋ค.
@gittycat compose๋ ์์ง์๊ฒ ์๋น์ค๋ฅผ ์์ํ๋๋ก ์ง์ํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ์ ํ โโ๋งค์ฐ ์ ํจํ ์์ฒญ์ ๋๋ค.
๋๋ ํ๋ก๋์ ์์ ๋์ปค๋ฅผ ํฌ๊ธฐํ๊ณ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐฉ๋์๋ก ์ด๋ํฉ๋๋ค.
2์ ๋ํ ๋ ๋ค๋ฅธ ํฌํ
2์ 4์ ๋ํ ๋ ๋ค๋ฅธ ํฌํ.
์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์ผ๋ถ ์๋น์ค์๋ ์ํ ์ข ์์ฑ, ๊ตฌ์ฑ ํ์ผ ์์ฑ, ๊ธฐํ ์ฌ๋ฌ ๊ฐ๋ฅ์ฑ ์ค์์ ํ ์คํธ ์ค์ํธ ์คํ์ด ํ์ํฉ๋๋ค. Docker์์ ๋ถ๋ฆฌํ๊ฑฐ๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ํ๋ก์ ํธ ์ค์ ์ ๋ถํ์ํ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋ฉ๋๋ค.
์ค์ ๋ฐ / ๋๋ ํ ์คํธ๋ฅผ์ํ ๊ฐ๋จํ ๋ช ๋ น ๋ง ์์ผ๋ฉด ์ํฉ์ด ํจ์ฌ ๋ ๊น๋ํด์ง๋๋ค.
2์ ๋ํ ๋ ๋ค๋ฅธ ํฌํ!
์ด ์ค๋ ๋๋ฅผ ์ฝ์์ง๋ง ์ ๊ฒ์๋ฌผ (https://github.com/docker/compose/issues/4650)์ ์์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ผ๋ฉฐ,์ด ๊ฒ์๋ฌผ์ ๋ซํ๊ณ ์ฌ๊ธฐ์์ ์ฐธ์กฐ๋์์ต๋๋ค. ์ ๊ฐ ๋งํ๊ณ ์ถ์๋ ์์ ์์ด ์ค๋ ๋์ ๋๋ถ๋ถ์ ๋ ผ์๋ ์คํ์ค์ธ ์ปจํ ์ด๋๋ฅผ ๋นํ์ฑํํ๋ ํ๋๊ทธ์ ๊ดํ ๊ฒ์ด์ง๋ง ์ ์ฌ์ฉ ์ฌ๋ก๋ ์ปจํ ์ด๋ ์์ฑ์ด๋ผ๋ ์ธ ๋ฒ์งธ ์ํ์ ๋๋ค.
์ปจํ ์ด๋๊ฐ ์คํ๋๋ ๊ฒ์ ๋ฐฉ์ง ํ ๋ฟ๋ง ์๋๋ผ ์ฒ์์๋ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค ์ ์๋๋กํ๊ณ ์ถ์ต๋๋ค (์ฌ์ฉ ์ฌ๋ก์์๋์ด๋ฅผ ์ํํ๋ ์ฌ์ฉ์ ์ค์ฌ ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค).
@ekkis ๋๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ
๋ฌธ์ ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
@frnco , ๋ ์์ธํ ์๊ณ ์ถ์ ๋ด์ฉ์ ์ดํดํ์ง ๋ชปํ์ต๋๋ค. ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ง ์๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๋ด ๊ฒ์ด ๊ทธ๋ฌํ ๊ฒฝ์ฐ์
๋๋ค. ๋ค๋ฅธ ์ด๋ฏธ์ง์ ํจ๊ป ํน์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ถ์ง๋ง์ด ํน์ ์ด๋ฏธ์ง๋ ๋ด๊ฐ ์์ฑํ ํ๋ก์ธ์ค์์ ์ฌ์ฉ๋ ๊ฒ์
๋๋ค. build-only
๋ํ ํ๋๊ทธ๋ฅผ ๋ง๋ค๊ณ ๋น๋ํ๋ ๋ฐ ๋ ๊ฐ์ ๋ณ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๊ณ ์ถ์ง ์์ต๋๋ค.
@ekkis ๋๋ ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ๊ณผ ๊ด๋ จ์ด์๋ # 963์ ์ดํด๋ณผ ๊ฒ์ ์ ์ํฉ๋๋ค.
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
: +1 :์ด ๊ธฐ๋ฅ์ ๋ํ ์์์น์ ๋ํ ์ง๋ฌธ์ด์๋ ์ต์ # 2์ ๊ฒฝ์ฐ? ๊ฐ์ฅ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ๋ค์๊ณผ ๊ฐ์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋์ดํด์ผํ๋ค๊ณ ์์ํ ์ ์์ต๋๋ค.
docker-compose up service1 service2 service3
... ๊ธฐ๋ณธ์ ์ผ๋ก ์์ํ๊ณ ์ถ์ง ์์ ํญ๋ชฉ์ ์๋ตํฉ๋๋ค.
์คํ ์์ค ์ปค๋ฎค๋ํฐ์์ ๋ง์ด ์์ฒญ ๋์ด ๊ธฐ๋ฅ์ ๊ธฐ์ฌํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ต์
2์ ๊ฒฝ์ฐ +1.
'์คํ
์ด์ง'๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ์ข์ต๋๋ค. ์๋น์ค๊ฐ ํ๋ก๋์
์์๋ง ์คํ๋ฉ๋๋ค.
์ต์ 2์ ๊ฒฝ์ฐ +1.
์ต์ 2์ ํฌํ
up
๋ช
๋ น ํํฐ๋ง์ด ์๋ฒฝํฉ๋๋ค โ docker-compose up service1 service3
: +1 : ์ต์ 2 ๋ฐ 4 ์ฉ
์ด ์์ ์์ ๋ถ๋ช ํ ์ต์ 2๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์คํํ๊ธฐ์ํ ๋ค์ ๋จ๊ณ๋ ๋ฌด์์ ๋๊น?
์ต์ 2์ +1์ ์ํด์ด ๊ธฐ๋ฅ์ด ์ด๋ฏธ ์กด์ฌํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉด์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ต์ 2์ +1
... ์ต์ 2์ ๋ํด ํ๋ ๋ +1
์ต์ 2์ ๊ฒฝ์ฐ +1
์ต์ 2์ ๊ฒฝ์ฐ +1 :-)
์ต์ 2 ๋ฐ 4์ ๊ฒฝ์ฐ +1
์๋
ํ์ธ์,
+1 ์ต์
2
IMHO, ์ต์ ์ ๋ง์ดํฌ๋ก ์๋น์ค ๋๋ ์ก๊ฐํ ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด์๋ ๊ฒฝ์ฐ ๋ก์ปฌ ํ๊ฒฝ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ๋ฐ์๋ก์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ ์ ํ์ํ ์์ ๋ง ์คํํ ์ ์์ต๋๋ค.
์ต์ 2๋ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๊ดํ ๊ฒฐ์ ์ด ์์ง ๋ด๋ ค ์ง๊ฑฐ๋ ๊ฐ๋ฐ์ด ์์๋์ด ๋ค๋ฅธ ๊ณณ์์ ์ถ์ ๋๊ณ ์์ต๋๊น?
๋ช ๋ฌ ์์ ๋ํ์ ๋ง์น๊ณ ๋ ๋ง์ ์๊ฐ์ ๊ฐ์ง๋ฉด์ด ๊ธฐ๋ฅ์ ํผ์์ ๊ตฌํํ๋ ๊ฒ์ด ํจ์ฌ ๋น ๋ฅผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. 2 ๋ ๋์ ์์ฒญ๋ ์์ ํฌํ์ ์์ฒญ์ด ์์์ผ๋ฉฐ ์์ผ๋ก๋ ํ ๊ฑธ์ ๋ ๋์๊ฐ ์์ฒด ๊ตฌํ์ด ํฅํ 5 ๋ ๋์ ํด๊ฒฐ์ฑ ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค (ํด๋น ๊ธฐ๋ฅ์ด ๊ณต์์ ์ผ๋ก ๊ตฌํ ๋ ๋๊น์ง).
๋ฌผ๋ก ์ต์ 2์ ๊ฒฝ์ฐ +1000
+1 ์ต์ 2
์ต์ 2์ ํฌํํ๋ฉด ์ฐจ์ด๊ฐ ์์ต๋๊น? '๊ทธ๋ด ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
์ฌ๊ธฐ์์๋ ๋๊ธ์ ์ต๊ทผ ๋ฌด์ญ๊ฒ๋์๊ณ ์๋ก์ด ํผ๋๋ฐฑ์ด ์ค์ ๋ก ๋ํ๋์ง ์์๊ธฐ ๋๋ฌธ์์ด ์ค๋ ๋๋ฅผ ์ ๊ทธ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌ๊ธฐ์ ๊ต๋ฅ ํ ๋๋ ์์ ๋ฐ๋ฅด๊ฒ ํ๋ํ์ญ์์ค.
์ด๊ฒ์ ์ด ๋ฌธ์ ์ ๋ฉ์ธํ ์ด๋ ํ์ ํ์ฌ, ๊ณต์ ์ ์ฅ์ด๋ค. ํธ์ ์ต์ ์ผ๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ๊ฒ์ธ์ง ๋น์ทํ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ๊ฒ์ธ์ง๋ ์์ง ๊ณ ๋ ค ์ค์ด์ง๋ง ๊ฐ์กฐ๋ ์ด์ ์ ์ด์ ๋ ์ ํฉํ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ์๋๋๋ค.
@ shin- ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ ๊ทธ๊ธฐ ์ ์ ์ปค๋ฎค๋ํฐ๊ฐ ๊ฐ๋ฐ ์์ง์ธ์ง ๋ช ํํ๊ฒ ์ ์ ์์ผ๋ฏ๋ก ํต์ฌ ํ์ด ํ์ ํ์ค์ ์ถฉ์กฑํ๋ฉด ๋ณํฉ ํ ์ ์์ต๋๊น? ์ค๋ ๋์๋์ด๋ฅผ ์๋ฃํ๋ ค๋ ๊ตฌํ ๋ฐ ์ปค๋ฎค๋ํฐ ๊ตฌ์ฑ์์ด ์์ผ๋ฉฐ, ํฌ์ ๋ญ๋น๊ฐ ์๋๋ผ๋ ํ์ธ์ ์ฐพ๊ณ ์์์ต๋๋ค. ํผ๋๋ฐฑ์๋ฐ์ ์ ์๋ค๋ฉด ์ค๋ ๋๋ฅผ ์ถ์ ํ์ฌ์ด๋ฅผ ํด๋ก์ ๋ก ์ด๋ํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
@jimzucker ์๋์ค-์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๊ตฌํ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๊ธฐ๋ณธ ๊ตฌํ์ ์ผ๋ฐ ๊ฐ๋ฐ์์๊ฒ ๋ฐ๋์ ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ผ๋ คํ๋ ๊ฒ์ ๊ทผ๋ณธ์ ์ธ ๋์์ธ ๋ฌธ์ ์ ๋๋ค.
์ด ์์ ์์ ์ด๊ฒ์ ๋ฒ์ ๋ฐ ๋ณต์ก์ฑ ์ธก๋ฉด์์ cmake
์ ์ผ์นํ๊ฑฐ๋ ๋ฅ๊ฐํ๋ ์์ ํ ์๋ก์ด ์ฝ๋๊ฐ๋์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ค๋ซ๋์ ๊ตฌํํ๋ ๊ฒ์ ๊ฑฐ๋ถ ํ ์ด์ ์
๋๋ค. ๋ถ๋ถ์ ์ผ๋ก ์ด๊ฒ์ Compose๊ฐ ์ํํ๋๋ก ์ค๊ณ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ํ [3] ๋จ์ํ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฑฐ๋ ์ ์งํ ์๊ฐ์ด๋ ๋ฆฌ์์ค๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฌ๋๋ค์๊ฒ ์ง์ ์ผ๋ก ์ ์ฉํ ์ฌ๋์ด๋์ด์ผํฉ๋๋ค.
๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ ์ํฉ์ ์ข ๋ ๋ช ํํ๊ฒํฉ๋๋ค. ๋๋ ์ฌ๋๋ค์ด์ด ์ค๋ ๋์ ๋ํ ์๋ต (๋๋ ์๋ต์ ๋ถ์กฑ)์ ๋ํด ํ๊ฐ ๋๊ณ ์ค๋งํ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ด๋ค ์ ์ผ๋ก๋ ๊ทธ๊ฒ์ ์ํ์ํฌ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง๋ ์์ง๋ง ๊ฑฐ๊ธฐ์ ์์ต๋๋ค.
[1] ์ด๋ค ์ฌ๋๋ค์ "์ ํ์ ์๋น์ค"๋ฅผ ์ํ๋ค๊ณ ์ธ๊ธํ์ง๋ง,์ด ๊ธ์์ ์ธ๊ธ ํ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ์๋๋๋ค. ๋ด๊ฐ ๋งํ ์์๋ ํ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ "์์
"๊ธฐ๋ฅ์ ์ํฉ๋๋ค.
[2] ๋๊ตฐ๊ฐ๊ฐ ํฌํธ๋ฅผ ๋
ธ์ถํด์ผํ๋ ์์
์ ์์ ๋ชจ์ ๋ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์ด๋ ๊ฐ ์ธํธ์ ์ ์ฉ ํ ์์๋ ์ต์
์ ๊ฒฐ์ ํ๋ ์์
์ด ์ฌ์ํ์ง ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋ฟ์
๋๋ค.
[3] ๊ทธ๋ฆฌ๊ณ ์ด ์์ ์์ ์ ๋ "๋"๋ฅผ ์๋ฏธํฉ๋๋ค. ์ ๊ฐ ํ์ฌ docker-compose
์ ์ ๊ทน์ ์ผ๋ก ์์
ํ๋ ์ ์ผํ ๊ด๋ฆฌ์์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
@ shin- ๋๋ ์์ ์ ๋ณธ๋ค. ๋ด๊ฐ ์ถ๊ตฌํ๋ ๊ฒ์ ๊ฐ์ฃผ์์๋ "์ ํ์ ์๋น์ค"์ด๋ฉฐ ์์ ์ ๊ฐ๋ ์ด ์๋ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. ๋ด๊ฐ ์นํธํ๋ ค๋ ์ค๋ ๋์ ์ผ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ์ง์ ์ ์ด๋ป๊ฒ ์งํํ ์ ์๋์ง์ ๋ํด ์ด๋ป๊ฒ ๋ ๋์ ํ ์ ์์ต๋๊น? ์ด ์ค๋ ๋์ ์ฐฌ์ฑํ์ฌ ๋ซํ ๊ฒฝ๋ก์ ๋ํ ๋ด ํฐ์ผ. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ '๊ณผ์ '๋ก ๋ช ํํ๊ฒ ์ ์ํ ์์ ๊ณผ ๋ถ๋ฆฌ ํ ์ โโ์๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ฝ๊ฐ์ ์ง์ ์ ์ด๋ฃฐ ์ ์์ต๋๋ค. ์ฌ๋๋ค์ด ๋ด ์ฝ๊ธฐ์์ ์ต์ 2์ ๋ํด +1์ ์ํํ๋ ๊ฒ์ ์ ํ์ ์๋น์ค์ ๋ํ ๊ฒ์ ๋๋ค. ํ ๋ก ์ ์ํด ์คํ๋ผ์ธ์ผ๋ก ์ ํ ํ ํ ํฌ๋ผ์ผ๋ก ๋์๊ฐ ์ ์์ต๋๋ค. ์ ๋ [email protected]์ ๋๋ค.
@ shin- ๋น์ ์ ์์ # 2๊ฐ ์๋ชป๋์์ต๋๋ค. ์๋น์ค๋ ์คํ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์๋น์ค์ ๋๋ค. ์ข ์์ฑ์ ์ฌ์ฉํ ์ ์์ ๋ ์ข ์ ์๋น์ค๊ฐ ๋์์ ์์ ํ๋ ์๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ณ์ธต์์ ๋ชจ๋ "์๋น์ค"๋ฅผ ํญ์ ์ฌ์ฉํ ์ ์๋๋ก ์๊ตฌํด์๋ ์๋ฉ๋๋ค.
๊ฐ์ฅ ์ ํต์ ์ธ ์ฉ์ด๋ก ์๊ฐํ๋ค๋ฉด, ์น ์๋ฒ๋ "์๋น์ค"๋ผ๊ณ ์๊ฐํ์ญ์์ค. ๊ทธ๋ฌ๋ ์ฃผ์ด์ง ํธ์คํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋๋ก ์ข ๋ฃํ๊ฑฐ๋ ๊ตฌ์ฑ ํ ์ ์์ง๋ง ์๋ฌด๋ ์๋น์ค ์ด์ธ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ์ง ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์์ฒญํ๋ ๋ง์ ๋ถ๋ค์ด ์์ ์คํ์ด ์๋ ์ต์ ์๋น์ค๋ฅผ ์ํ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด, Docker ์ปจํ ์ด๋๋ก ์คํ๋๋ ๋ง์ดํฌ๋ก ์๋น์ค ์งํฉ์ด ์๊ณ ๋ชจ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ ์ฒด ์๋น์ค๋ก ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ์ธ์ ๊ฐ๋ ์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋๊ณ ๋ชจ๋ ์๋ฒ์์ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์คํํ ํ์๊ฐ ์์ต๋๋ค. ํ์๊ฐ ์๋ ์ปจํ ์ด๋์ ํฌํจ ๋ ํน์ ๊ธฐ๋ฅ์ด ํ์ํ์ง ์์ต๋๋ค.
๋ํ ์ด๊ฒ์ ๊ฐ๋ฐ ํ๊ฒฝ์์ํ ์ข์ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํน์ ์ปจํ ์ด๋์ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์์ํ ํ์๊ฐ ์์ต๋๋ค.
์ ํํ๊ฒ, ๊ฐ๋จํ ๋ถ์ธ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ .env
ํ์ผ์์ ์๋น์ค๋ฅผ ์ฝ๊ฒ ํ์ฑํ / ๋นํ์ฑํํ๊ณ yaml ํ์ผ ํธ์ง์ ํผํ ์ ์์ต๋๋ค.
@ekkis ๋๋ ๋น์ ์ด ๋ด๊ฒฐํจ์ฑ๊ณผ ๋ถ๋ฐฐ ์ฑ์ ๋ค์ ํผ๋์ค๋ฝ๊ฒ ์๊ฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ์ฃผ์ ์ ๋ํ ๋ด ๊ฐ์ฃผ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ฌ๊ธฐ์ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ์ธ์ ํฉ๋๋ค.
๋ชจ๋ : ์ผ๋ถ ์๋น์ค๊ฐ ๊ทํ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํ ์ฌํญ ์ธ ๊ฒฝ์ฐ ์ด๋ฏธ ํ์ฌ ๊ธฐ๋ฅ์ผ๋ก์ด๋ฅผ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ -f
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํฌํจํ๊ฑฐ๋ ์ ์ธ ํ ์์๋ ๋ณ๋์ ์์ฑ ํ์ผ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ค์์ด ์ต์
์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ํด ๊ทธ๋ค์ง ์ค๋๋ ฅ์ด์๋ ์ฃผ์ฅ์ด ์๋๋๋ค.
@ shin- ์๊ฐ์๋ด์ด์ด ๋ํ๋ฅผ ๋๋ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ yml ํ์ผ์ ์ ์ํจ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ yml ํ์ผ์ ์ ์ํ๋ฉด ์๋น์ค ๋ชฉ๋ก์ ์ ๋ฌํ ์๋ ์์ง๋ง ์ด๋ ํธ๋ฆฌํ์ง ์์ผ๋ฉฐ ์ฌ์ฉ์ ์ค๋ฅ๋ก ์ธํด ์ด์ ์ํ์ ์ด๋ํฉ๋๋ค. ํนํ ์์ฉ ์ ํ์ ๊ฒฝ์ฐ ํ๋์ compose ํ์ผ์ ๋ฐฐํฌํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๋ ๊ณตํต ๋์์ ์ป๊ณ ๊ณ ๊ธ ์ต์ ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ๋ ค๊ณ ํฉ๋๋ค. ํ๋์ ํ์ผ์ dev, CI / CD ๋ฐ ๋ฐฐํฌ ๋ชจ๋์ ๋ํด์ด ๋ชจ๋ ๊ฒ์ ํจ์ฌ ๊น๋ํ๊ฒ ๋ง๋ญ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ด์๋ ENV ๋ณ์์ ์ถ๊ฐ๋ ์ฐ๋ฆฌ์๊ฒ ํฐ ๋์์ด๋์๊ณ ๋ง์ yml ํ์ผ์ด ํ์ํ์ง ์๊ฒ๋์์ต๋๋ค. ์ด๊ฒ์ ๋ฐฐํฌ๋ฅผ ์ค๋ช ํ๋ ๋จ์ผ ํ์ผ์ ๊ด๋ฆฌํ๋ ํ ๋จ๊ณ ๋ ๋์๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
ํต์ฌ ํ์ด์ด LMK์ ๋ํ ๊ธฐ์ฌ๋ฅผ ๊ธฐ๊บผ์ด ์์ฉ ํ ์์๋ ํ์์ด ์์ต๋๊น?
@shin , ๋๋ ๋ด๊ฒฐํจ์ฑ ๋๋ ๋ถ๋ฐฐ ๊ฐ๋ฅ์ฑ์ ๋ํด ์ธ๊ธํ์ง ์์์ต๋๋ค. ๋๋ ๋จ์ง "์๋น์ค"์ ์ ์, ์ฆ ์๋น์ค ์คํ ์ฌ๋ถ๊ฐ ์ ์์ ๋ด์ฌ๋์ด ์์ง ์๋ค๋ ์ ์ ์ง์ ํ์ต๋๋ค.
@ shin- ๋๋ @ekkis์ ๊ฐ๋ ฅํ๊ฒ ๋์ํฉ๋๋ค : ์์๋์ง ์์ _ ๊ธฐ๋ณธ์ ์ผ๋ก
์ : mysql DB๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ถ๊ฐ _service_ phpmyadmin
์ ์ํฉ๋๋ค. ์ด๊ฒ์ ์ง์ ํ ์๋น์ค์
๋๋ค : ๋ค๋ฅธ ์๋น์ค์ ์์กดํ๋ ์ฅ๊ธฐ ์คํ, ๋
ธ์ถ ๋ ํฌํธ.
ํ์ง๋ง์ด ์๋น์ค๋ฅผ _ ๊ธฐ๋ณธ์ ์ผ๋ก _ ์์ํ์ง ์๊ณ _ ์์ฒญ์ _ / ๊ฐ๋ฐ ์ค์ ๋ง ์์ํ๊ณ ์ถ์ง ์์ต๋๋ค.
ํ์ฌ ์ ๋์ด ์๋น์ค๋ฅผ ์ถ๊ฐ docker-compose.yml
๋ฃ๊ณ ์์์ ์ ์ํ๋๋ก docker-compose
๋ ํ์ผ์ ๋ชจ๋ ์ ๊ณตํ์ฌ ์์ํจ์ผ๋ก์จ์ด๋ฅผ ์ธ์ํฉ๋๋ค.
๊ทธ๋ ์ต๋๋ค.์ด๋ฅผ ๋ฌ์ฑ ํ ์์๋ ๋ฐฉ๋ฒ์ด ์ด๋ฏธ ์์ต๋๋ค. ์๋น์ค๋ฅผ ์ฌ๋ฌ ํ์ผ๋ก ๋ถํ ํ๊ฑฐ๋ ๋จ์ํ docker-compose
์ด์ธ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์์์ ์ด๋ฏธ ์ผ ๋ฏ์ด :์ด ๋ฌธ์ ๋ ์์ ํ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์๋ก์ด ๊ฐ๋
(์ : _tasks_)์ ๊ดํ ๊ฒ์ด ์๋๋ผ ํนํ ๊ฐ๋ฐ ํ๊ฒฝ ์์์ ํธ๋ฆฌ ์ฑ์ ๊ดํ ๊ฒ ์
๋๋ค.
docker-compose -f docker-compose.yml -f docker-compose-tools.yml up
๋ฅผ ์
๋ ฅํ๋ ๊ฒ์ ํธ๋ฆฌํ์ง ์์ผ๋ฏ๋ก docker-compose
๋ ์์ฒด ์ฝ์์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์ ๊ฐ ํ๋ก์ ํธ๋ฅผ ์์ํ ์์๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ ์ ์ ๊ณตํฉ๋๋ค. Compose๋ ์ฌ๋ฌ ํ์ด์ง์ "๊ฐ๋ฐ์ ์์ ์๋ด์" ๋ฅผ ๋จ์ผ ์ปดํจํฐ์์ ์ฝ์ ์์๋ Compose ํ์ผ ๊ณผ ๋ช ๊ฐ์ง ๋ช ๋ น์ผ๋ก ์ค์ผ ์
์ด๋ค ์๋น์ค๋ฅผ ์์ํ ์ง ๋๋ ์ด๋ค yml
ํ์ผ์ ์ด๋ค ํ๊ฒฝ์์ ์ฌ์ฉํ ๊ฒ์ธ์ง๋ ์ผ๋ฐ์ ์ผ๋ก _ ์ฌ๋ฌ ํ์ด์ง "๊ฐ๋ฐ์ ์์ ์๋ด์"_์์ ์ฐพ์ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ ์๊ฐ์ @jimzucker ๊ฐ ์ฌ๊ธฐ์
๋ด PoC ๊ฐ "์ ํ์ ์๋น์ค"๋ฅผ ์ํด ํ์ํ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ณด์ฌ
@ shin- ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ํ ์ฌํญ์ผ๋ก ํ์ ํ ์์๋ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ ๋ฐ ๋์ํ์ง ์์ต๋๊น? ๊ทธ๋ฌ๋ ์ฌ์ ํ ์๋น์ค ์ธ ๊ฒฝ์ฐ ํฐ ๋์์ด ๋ ๊ฒ์
๋๊น?
"_services_๋ฅผ ์ ํ ์ฌํญ / ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์์์ผ๋ก ํ์"๋ก ์ถ์ํ๋ฉด์ด ๋ฌธ์ / ์ด์ ๋ํ ํ ์์ฒญ์ด ์๋ฝ๋๊ณ ๋ณํฉ๋ฉ๋๊น?
@shin , ์์ @acran ์ ์์ ์ ์ถ๊ฐํ๊ธฐ ์ํด ํน์ ์๋น์ค ๋ฅผ ์ด๋ฆ์ ์ฌ์ฉ ํ๋ ๋ค๋ฅธ ์๋น์ค์ ์ํด ์คํ๋๊ธฐ ๋๋ฌธ์ docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์๋น์ค๋ฅผ ๋น๋ํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ๋ด๊ฐ "up"ํ ๋๋ง๋ค project_app_1 , project_otherapp_1 ๋ฑ์ "์๋น์ค"๋ฅผ ์ป๊ฒ๋๋ค๋ ์ ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์คํํด์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค (์ด๋ฅผ ์์ํ๋ ๋ง์คํฐ ์๋น์ค๊ฐ ์์ต๋๋ค). . ๊ทธ๋์ ๋๋ ํญ์ ๊ทธ๋ค์ ์ฃฝ์ฌ์ผํฉ๋๋ค. ๊ทธ๋์ ๋์๊ฒ๋ NO_RUN ๋๋ BUILD_ONLY ํ๋๊ทธ๊ฐ ์์ ํ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ํธ๋ฆฌ ํ ๊ฒ์ด๋ค
@acran
์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ํ ์ฌํญ์ผ๋ก ํ์ ํ ์์๋ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ ๋ฐ ๋์ํ์ง ์์ผ์๊ฒ ์ต๋๊น?ํ์ง๋ง ์ฌ์ ํ ์๋น์ค์ ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ๋์์ด ๋ ์ง์ ๋์ํ์ง ์๋๋ค โ ๋๋ "๋งค์ฐ"๊ฐ ๊ณผ์ฅ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ทํ์ ์์์, ์ ํ์ ์ผ๋ก ํฌํจ๋ ์์๋ docker-compose.phpmyadmin.yml
๋ฅผ ๊ฐ๋ ๊ฒ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋ ๊ธฐ๋ณธ ํ์ผ ๋ด์์ ์๋น์ค ์ ์๋ฅผ ์์ ํ๋ ๊ฒ๋ณด๋ค ๋ ์ด์ ๋ถ๋ด ์ค๋ฝ๊ฑฐ๋ ๋ณต์กํ์ง ์์ต๋๋ค (์ง์นจ "๊ฐ๋ฐ์ ๊ฐ์ด๋"์ธก๋ฉด์์).
๋๋ ๋ํ ๊ฐ๋ฐ์๋ค์๊ฒ ๊ผญ ํ์ํ์ง ์์ ๋ "ํ๊ฑด" ์์ฃผ๋ ๊ฒ์ ์์ถฉ ๊ด๊ณ๋ฅผ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค.
"์๋น์ค๋ฅผ ์ต์ ์ผ๋ก ํ์ / ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์์"์ผ๋ก ์ถ์ํ๋ฉด์ด ๋ฌธ์ / ์ด์ ๋ํ ํ ์์ฒญ์ด ์๋ฝ๋๊ณ ๋ณํฉ๋ฉ๋๊น?
์์ ๋ด์ฉ์ ์ฐธ์กฐํ์ญ์์ค.์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์์๊ฒ๋๋ฉด ์ฌ๋๋ค์ ์๋ ๋ ๋ชฉ์ ์ด์ธ์ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ ์ด๋ฅผ ์ง์ํ๋ ์๋ก์ด ๊ธฐ๋ฅ ์ธํธ๋ฅผ ๊ตฌํํ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ๋ํ cc @jimzucker ; ๋๋ ํ์ฌ์ด ์๋๋ฆฌ์ค๊ฐ ์ ๊ฐ๋๋ ๊ฒ์ ๋ง์ ์์๋ ๊ตฌํ์ ์๊ฐํ ์ ์๋ค. ๊ฐ๋ฅํ๋ค๋ฉด์ด ๋ฌธ์ ๋ ์ค๋ ์ ์ ์ข ๊ฒฐ๋์์ ๊ฒ์ ๋๋ค.
@ekkis ์ด๋ฌํ ์๋น์ค๋ฅผ ์ง์ ์์ํ์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ ๋ณ๋์ ํ์ผ์ ๊ฒฉ๋ฆฌํ๋ ๊ฒ์ด ์ ํํ ๋ฌธ์ ๊ฐ๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋๋ ์ด๊ฒ์ด ์ ์ฌ๊ธฐ์์ ๊ทธ๋ ๊ฒ ์ค๋จ๋๋์ง์ ๋ํด ์ ๋ง๋ก ํผ๋ ์ค๋ฝ์ต๋๋ค.
@shin docker-compose.yml ์ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋น๋ ํ ์ ์๋ค๋ฉด ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ค์ ์ง์คํํ๋ ๋ฐ ๊ฐ์ฅ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. ์ค์ ๋ก ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ ์ (์กฐ๊ฑด๋ถ๋ก) ๊ตฌ์ถํ๊ณ ์ถ์ ์ ์๋ค๋ ์ฌ์ค์ด ์๋นํ ์๋ฏธ๊ฐ ์์ผ๋ฉฐ, ๊ทธ ๊ธฐ๋ฅ์ ๋ฐ์๋ฅผ ๋ณด๋ ๋๋ค.
๋ฐ๋ผ์ docker-compose ํ์ผ๋ my makefile ์ ๋๋ค. ํ์ง๋ง ๋ด๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค์๋ค ๊ณ ํด์ ์คํํ๊ณ ์ถ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. docker-compose๊ฐ ์๋น์ค๋ฅผ ์คํํ๊ณ ์ด๋ฆ์ ๋ฐ๋ช ํ๊ณ ์ ์ ํ ๋งค๊ฐ ๋ณ์ / ํ๊ฒฝ ๋ณ์ ๋ฑ์์ด ์คํ ํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์์งํ์ด ๊ฐ๋จํ ํจ์น์ ๋ํ ๋ฐ๋๊ฐ ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ ๋งค์ฐ ์ ์ฉ ํ ๊ฒ์ ๋๋ค
์ด์ ๊ฒ์๋ฌผ ์์ ํ์ ๊ณต์ ์ ์ฅ์ด Compose ํ์ผ์ Makefile๋ก ์ฌ์ฉํด์๋ ์๋๋ ์ด์ ๋ฅผ ๋ถ๋ช ํ ์ง์ ํ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋ํด ํ๋ ธ๋ค๊ณ ๋ฏฟ๊ณ ์ฌ์ ํ ๊ทธ๋ ๊ฒํ๊ณ ์ถ๋ค๋ฉด, ๊ทธ๊ฒ์ ๋น์ ์ ํน๊ถ์ด์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ง์ํ๊ธฐ ์ํด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋๋ก ์ฃผ์ฅํ๋ ๊ฒ์ ์ฝ๊ฐ ํฐ๋ฌด๋์๋ ์ผ์ ๋๋ค.
@์ ๊ฐ์ด-
๊ทํ์ ์์์, ์ ํ์ ์ผ๋ก ํฌํจ๋ ์์๋ docker-compose.phpmyadmin.yml์ ๊ฐ๋ ๊ฒ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋ ๊ธฐ๋ณธ ํ์ผ ๋ด์์ ์๋น์ค ์ ์๋ฅผ ์์ ํ๋ ๊ฒ๋ณด๋ค ๋ ์ด์ ๋ถ๋ด ์ค๋ฝ๊ฑฐ๋ ๋ณต์กํ์ง ์์ต๋๋ค (์ง์นจ "๊ฐ๋ฐ์ ๊ฐ์ด๋"์ธก๋ฉด์์).
์ฌ์ค ์ ๋ ์์ง ์ฌ๊ธฐ์ ํ๊ฒฝ ๋ณ์๋ฅผ ํฌํจ์ํค๋ ๊ฒ์ ๋ํด ์๊ฐํ์ง ์์์ต๋๋ค. ๋ด๊ฐ ์ํ๋ "์ ํ์ ์๋น์ค"๊ฐ ๋ง์นจ๋ด ํ์ฉํ๋ ์ํฌ ํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
docker-compose.yml
ํ์ผ์ด์๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๊ฐํด์ผ ํ ์ผ์ docker-compose up
๋ฅผ ์คํํ๋ ๊ฒ๋ฟ์
๋๋ค. ๊ทธ๋ฌ๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋น๋๋๊ณ ์คํ๋ฉ๋๋ค.docker-compose up phpmyadmin
์
๋๋ค.์ ์๊ฒ๋ ์ฌ๋ฌ ๊ฐ์ docker-compose.yml
ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค _ ํจ์ฌ _ ํธ๋ฆฌํ๋ฉฐ, ์ฌ๊ธฐ์์๋ ๋๋ถ๋ถ์ ๋ค๋ฅธ ์ฌ๋๋ค๋ ์๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์์ "์ ํ์ ์๋น์ค"๋ฅผ ๊ฐ๋ ์ด์ ์
auto_up: false
) ๋ง ์ค์ ํ๋ฉด๋ฉ๋๋ค.docker-compose -f docker-compose.phpmyadmin.yml up
docker-compose -f docker-compose.yml -f docker-compose.phpmyadmin.yml up
๋๋docker-compose -f docker-compose.phpmyadmin.yml -f docker-compose.yml up
?phpmyadmin
๋ผ๋ ์๋น์ค๊ฐ ์๊ณ ์ฌ์ฉ์๊ฐ์ด๋ฅผ ์์ํ๋ ๋ฐฉ๋ฒ์ ์ฆ์ ์๊ณ ์๋ค๋ ๊ฒ์
๋๋ค.์์ ๋ด์ฉ์ ์ฐธ์กฐํ์ญ์์ค.์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์์๊ฒ๋๋ฉด ์ฌ๋๋ค์ ์๋ ํ ๋ชฉ์ ์ด์ธ์ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ ์ด๋ฅผ ์ง์ํ๊ธฐ์ํ ์๋ก์ด ๊ธฐ๋ฅ ์ธํธ๋ฅผ ๊ตฌํํ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
์คํดํ์ง ๋ง์ญ์์ค. ์ฌ๊ธฐ์์ ๊ทํ์ ์ฐ๋ ค ์ฌํญ์ ์ดํดํ ๋ฟ๋ง ์๋๋ผ ์ด์ ๋์ํฉ๋๋ค. ๊ธฐ๋ฅ์ด ์๋ํ์ง ์์๋๋ผ๋ ์ํ๋ ์ํฌ ํ๋ก์ ๋ง๊ฒ์ด ๊ธฐ๋ฅ ๋๋ ๊ธฐํ (!) ๊ธฐ๋ฅ์ ๊ตฌ๋ถ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ํญ์์์ ๊ฒ์
๋๋ค. ๊ทธ๋ ๊ฒ ์ฌ์ฉ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ "ํ์คํฌ"์ ๊ธฐ๋ฅ์ด ๋๋ฝ ๋ "์ต์
์๋น์ค"์ ๋ํ ์์ฒญ์ ๋ํด _ ๊ทธ๋ฐ ๋ค์ _ ์ฝ๊ฒ ์๋น์ค๊ฐ ํ์คํฌ๊ฐ ์๋๋ฉฐ ํ์คํฌ๋ฅผ ๋จผ์ ์๋ก์ด ๊ฐ๋
์ผ๋ก ๋์
ํด์ผํ๋ฏ๋ก ์์ง ์ง์๋์ง ์๋๋ค๊ณ ์ฃผ์ฅ ํ ์ ์์ต๋๋ค. ์ฆ, ์๋น์ค๋ฅผ ์ ํ ์ฌํญ์ผ๋ก ํ์ํ๋ ๊ฒ ์ด์์ ๊ฒ์ ์์
๊ฐ๋
(์ : ์ต์
4)์ ํฅํ ๋จ๊ณ์ด๋ฉฐ ๊ทธ ์ฌ์ด์ ๋ช
ํํ ๊ตฌ๋ถ์ด ์์ต๋๋ค.
_service_๋ฅผ ์ ํ ์ฌํญ์ผ๋ก ํ์ํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๊ทธ ์ปท์ ์ค๋ฅธ์ชฝ์ ์์ต๋๋ค. "์ด ๊ธฐ๋ฅ ์์ฒด๋ ๊ตฌํํ๊ธฐ์ ๋๋ฌด ๋ณต์กํ์ง๋ ์์ง๋ง ์ฌ์ฉ์๊ฐ ์๋ชป ์ฌ์ฉํ๋๋ก ์ ํน ํ ์ ์์ต๋๋ค."ํ์ฌ์ด ๊ธฐ๋ฅ์ ๋ฐ๋ํ๋ ์ ์ผํ ์ค์ (์ ํจํ์ง๋ง!) ์ฃผ์ฅ์์ด๋ฅผ ๊ตฌํํ์ง ์๋ ์ด์ ๋ก์ ์๋นํ ๋ถ๋ง์กฑ ์ค๋ฝ์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ๋ฉด์ ๋ง์ ํธ๋ฆฌํจ์ ์ป์ ์์๋ ์ฌ์ฉ์.
๋๋ ๋ด ํ ๋ฆฌํ์คํธ # 3047์ ํ์ฌ ๋ง์คํฐ๋ก ๋ฆฌ๋ฒ ์ด์คํ๊ณ ์ด๊ฒ์ ๋ฐ์๋ค์ด ๊ธฐ ์ํด ํ์ํ ํด๋ฆฌ์ฑ์ ํ ๊ฒ์ ๋๋ค. ์ ๋ฐ ์๋ ค์ฃผ์ธ์;)
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ๋์ปค ํ๋ธ ๋๋ ๋ถ๋๋ก ํธ์ํ์ง ์์ผ๋ฉฐ ์์ฒด ๋ ์ง์คํธ๋ฆฌ๋ ์์ผ๋ฉฐ ์๋น์ค๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์์์ผ๋ก ํ์ ํ ์ ์๋ค๋ ๊ฒ์ ์์๋์ง ์๋ docker-compose.yml
์ ์ ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๊ฐ ์๊ณ ์ด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋น๋ํ๋ ๋ค๋ฅธ ์ปจํ
์ด๋๊ฐ ์์ต๋๋ค.
์ด ๋จ์ผ ๊ธฐ๋ฅ์๋ง์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ docker-compose
ํฌํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
@ shin- ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๋น์ ์ ์์ ์ ์ดํดํ๊ณ ๊ณต๊ฐํ๋ค๊ณ ์๊ฐํ์ง๋ง, "์ค์ฉ ๋ ์์๋ค"๋ ๊ฒ์ ๋ถ๋ช ํ-๋ง์ ์คํ ๊ฐ๋ฅํ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์ข์ ์ฃผ์ฅ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ์ค์ฉ ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ํํธ์จ์ด์ ์๋ก์ด ์์ด๋์ด๊ฐ ์ฑ์ฅํ๋ ๋ฐฉ์์ ๋๋ค. ๊ธฐ์ ์ ์์ ํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค. ์ง๋ 25 ๋ ๋์ ์ ๊ณต๋ ๋ชจ๋ ๊ธฐ์ ์ ์ค์ฉํ์ง ์์๋ค๋ฉด ์น์ ์ค๋๋ ์ ์น์ด ์๋ ๊ฒ์ ๋๋ค.
์ด์จ๋ .
๋น์ ์ ๋ฐ๋ฅด๋ฉด-๋จ์ํ-์๋น์ค์ ์์
์ ์ฐจ์ด๋ ์๋ช
์
๋๋ค. ์ด์น์ ๋ง์ต๋๋ค. ์ ๋ ์ฌ๋ฌ๋ถ์ด ๊ทธ๊ฒ๋ค์ ๋ ๊ฐ์ง ๋ค๋ฅธ ๊ฐ๋
์ผ๋ก๋ณด๊ณ ๊ทธ๊ฒ์ด ์ ์ฌ์ ์ธ ์ ์บ์ด๋ผ๊ณ ๋๋ผ๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋์ด ๊ตฌ๋ถ์ ๋ฌธ์์์ ๋ช
ํํ ์ค๋ช
๋์ง ์์ต๋๋ค. ๋ ์ปค๊ฐ ์๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ์ ์ํค๋ ๋ฐ ์ฌ์ฉ๋์ง ์๋๋ค๋ ์ ๋ ์ง์ ๋์ง ์์์ต๋๋ค.
๋ด ๋ง์ ๋์ปค ํ์ด ์ด๊ฒ์ ๋ํด ๊ฐํ ์
์ฅ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ฒ์๋ถํฐ ๋ช
ํํ๊ฒํด์ผํ๋ค๋ ๊ฒ์
๋๋ค.
๋ํ. ์์
๋๋ ์๋น์ค, ๋ถ๋ช
ํ ๊ฒน์น๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋น์ค๋ฅผ ์ ํ ์ฌํญ์ผ๋ก ํ์ํ๋ ๊ฒ์ ํ์คํ ์์
์ธก์ ๊ณ ์ ํ ๊ฒ์ด ์๋๋๋ค.
์ค์ฉ์ ์ธ ๊ด์ ์์ ์ ๋ @acran์ ํ์คํ ๋์ํฉ๋๋ค. ๋จ์ผ docker-compose ํ์ผ์ ๊ฐ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋์ DX์ด๊ณ ๋ง์ ๊ฒ์ ๋จ์ํํ๋ฉฐ ์ฌ๋ฌ ๊ฐ์ docker-compose ํ์ผ์ ๊ฐ๋ ๊ฒ๋ณด๋ค ์ค๋ฅ๊ฐ ์ ์ต๋๋ค.
Hehe, ์ ๋ ์ฐ๋ฆฌ๊ฐ "๋ธ๋ผ์ฐ์ "๊ฐ ์ด๋ฏธ์ง๋ฅผ ํ์ํ๋๋ก ํ์ฉํ๊ธฐ ์ํด ๋ก๋น ํ ๋ ์์๋ ๊ฒฉ๋ ฌํ ํ ๋ก ์ ๊ธฐ์ตํฉ๋๋ค. ๋ฐ๋์๋ค์ ์ฃผ์ ์ฃผ์ฅ์ ํ์ดํผ ํ
์คํธ ์ ์ก ํ๋กํ ์ฝ์ด๋ผ๋ ๊ฒ์
๋๋ค.
์๋ ๋ฐฉ๊ท๋ฅผ ์ฐ์์ํค๋ ๊ตฌ์ฝ์ ๋ํด ์ฃ์กํฉ๋๋ค.
@ shin- docker-compose๊ฐ ๋ฉ์ดํฌ ํ์ผ๋ก ์ฌ์ฉ๋์ง ์์์ผํ๋ค๋ฉด ๋ฉ์ดํฌ ํ์ผ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์์ผํฉ๋๋ค. ๋ด ํ๋ก์ ํธ๋ฅผ ๋น๋ ํ ์ ์๋ค๋ฉด (bravo!) makefile์ด ์๋๋ผ๋ ์ ์ฅ์ ์ทจํ๋ ๊ฒ์ ์ฐ์ค๊ฝ ์ค๋ฝ์ต๋๋ค.
@ shin- ๋ด, ๋น์ ์ ๋น์ ์ ์ด์ ๊ฐ ์๋ฌด๋ฆฌ ๋นํฉ๋ฆฌ์ ์ด๊ฑฐ๋ ๊ธฐ๋ฅ์ด ์ผ๋ง๋ ์ ์ฉํ ์ง์ ๊ด๊ณ์์ด ์ํ์ง ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋จ์ง ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ์ฐ๋ฆฌ๋ค์๊ฒ ๋๊ตฌ๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ฉ์์ด๊ณ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๊ณ ์์ผ๋ฉฐ ๋๊ตฌ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถฉ์กฑํ๋ ๊ฒ๋ง ํผ ์ ์ฉํ๊ณ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ ๋์๊ฒ ์ฌ์ํ ์๊ทน ์ผ๋ฟ์ ๋๋ค. _ ๋ด ์๋น์ค๋ฅผ ์์ํ ๋๋ง๋ค _ ํ๋นํ ์ด์ ์์ด ์์ฑ๋๋ ๋ง์ ๊ฒ๋ค์ ์๋์ผ๋ก ์ฃฝ์ฌ์ผํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ ์ฅ์ ๊ฐ ๋ ์ ์์ผ๋ฉฐ ์๊ทน์ ์ ๋๋ ๋ค์ํฉ๋๋ค.
๋๋ ๊ณต์์ ์ธ ์ ์ฅ์ด ์ฐ๋ฆฌ๊ฐ ํ์๋กํ๋ ๊ฒ์ ๊ณผ์ ์ผ์ง๋ผ๋ ๋๋น๋ฅผ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ ๊ณต์์ ์ธ ์ ์ฅ์ ์ ์ฉํ PR์ ๋ฐ์๋ค์ด๊ธฐ๋ฅผ ๊บผ๋ฆฌ๋ ๊ทผ๊ฑฐ๋ฅผ ์ค๋ช ํ์ง ์์ต๋๋ค. docker-compose์ ๋ํ ์์๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ์ ์ถฉ๋ถํ ๊ฒน์นจ์ด์์ ๋ ์ฌ์ ํ dobi๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฐ๋ฆฌ ์ถ์ ํจ์ฌ ๋ ์ข๊ฒ ๋ง๋ค ์์ฃผ ์์ ๋ณํ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ถ์์ ์ผ๋ก, ๋๋ "๋ฌด์ ์ "์ด ์๋์ง๋ง ๋ ์ด์์ ๋ ผ์๋ฅผ ๋ง๊ธฐ ์ํด ์ค๋ ๋๋ฅผ ์ ๊ทธ๋ ๊ฒ์ ๋จ์ํ ๋น๋ฏผ์ฃผ์ ์ด๊ณ ๊ถ์์ฃผ์์ ์ผ ๊ฒ์ ๋๋ค. ์คํ ์์ค๋ ๊ฐ๋ฐฉ์ ์์น์ ๊ธฐ๋ฐ์๋๊ณ ์์ผ๋ฉฐ,์ด ํ๋ก์ ํธ๊ฐ ๊ฒ์ด๊ณผ ๋ ์ฌ ์ ์ ์ ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๋๋ ๊ฒ์ ๋ณด๋ฉด ์ํ๊น์ต๋๋ค.
@rysiekpl ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๊ณ ์ํ๋ ๋ฌธ์ ์ ๋๋ค. https://github.com/docker/cli/pull/452๋ฅผ ์ฐธ์กฐ
@creynders ๋๋ ๊ทธ๊ฒ์ด ์ฝ๊ฐ์ ์๋ชป๋ ํน์ฑ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ฌด๋ ์ ํ์ ์๋น์ค๊ฐ ์กด์ฌํด์๋ ์๋๋ค๊ณ ๋งํ์ง ์์ต๋๋ค (์ฌ์ค ๋ด๊ฐ ์ง์ ํ๋ฏ์ด ๋ณ๋์ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค). ์ด๊ฒ์ <img>
ํ๊ทธ๋ฅผ ๋ช
์ ์ ์ผ๋ก ๋ซ์ง ์๋ ๊ฒ์ด ์ ํจํ์ง ๊ทธ๋ฆฌ๊ณ ํน์ ๋ธ๋ผ์ฐ์ ๊ฐ์ด๋ฅผ ์ง์ํด์ผํ๋์ง ์ฌ๋ถ์ ๋ํ ๋
ผ์๊ณผ ๋ ๋น์ทํฉ๋๋ค.
๋ํ ๊ทํ์ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋์ด ๊ตฌ๋ถ์ ๋ฌธ์์์ ๋ช ํํ ์ค๋ช ๋์ง ์์ต๋๋ค. ๋ ์ปค๊ฐ ์๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ์ ์ํค๋ ๋ฐ ์ฌ์ฉ๋์ง ์๋๋ค๋ ์ ๋ ์ง์ ๋์ง ์์์ต๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก https://docs.docker.com/compose/overview/ ํ์ด์ง์ ์ฒซ ๋ฒ์งธ ๋จ๋ฝ์ ๋๋ค (๊ฐ์กฐ ํ์) :
Compose๋ ๋ค์ค ์ปจํ ์ด๋ Docker ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ณ ์คํํ๊ธฐ์ํ ๋๊ตฌ์ ๋๋ค. Compose์์๋ Compose ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋จ์ผ ๋ช ๋ น ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ์์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์์ํฉ๋๋ค.
@ekkis Compose๊ฐ ์ค์ ๋ก ํ๋ก์ ํธ์ ๋์์ด ๋ผ์ ์ ๋ง ๊ธฐ์ฉ๋๋ค! ๋๋์ด ๋ชจ๋ ๊ฒ์ ์ฑ์คํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋ค. ๊ทธ๊ฒ์ด ๋น์ ์ด ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ฐฉ์์ด๋ผ๋ฉด ์ ๋์ ์ผ๋ก ๊ด์ฐฎ๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ๊ทธ ๋ฐฉํฅ์ผ๋ก ๋ ๋์๊ฐ๋ฉด ์๋ง๋ ์ฅ๊ธฐ์ ์ผ๋ก ๋ ์ ํ ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ ๋ชจ๋๋ ๋๋ฌด ๋ง์ ์ผ์ ์๋ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์๊ณ ์์ต๋๋ค (Emacs๊ฐ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๋ค๊ณ ์๊ฐํ์ง๋ง : stuck_out_tongue :)
๋๋ ๋ด๊ฐ "๊ถ์์ฃผ์ ์"๋ผ๊ณ ์๊ฐํ์ง ์์ง๋ง, ๋ด ์์ ์ ์ ๋๋ก ํํํ์ง ์์์ ์๋ ์์ต๋๋ค. ๋ด ์๋๋ ์ฌ๋๋ค์ด ์ํธ ์์ฉ์์ ์์ ๋ฐ๋ฅด๊ณ ๊ธ์ ์ ์ธ ํ๋๋ฅผ ์ ์งํ๋๋ก ์ฅ๋ คํ๋ ๊ฒ์ด ์์ต๋๋ค. ์ค๋ ๋๋ ์ฌ์ ํ ์ ๊ธ ํด์ ๋์ด ์์ผ๋ฉฐ ์ฌ๋๋ค์ด ๋น์ดํ๊ฑฐ๋ ๋ฌด๋กํ ๊ฒ์ ์์ ํ๋ ํ ๊ณ์๋ฉ๋๋ค.
๊ตฌ์ฑ์์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ์ฃผ์ฅ์ "๋ง๋ค๊ธฐ ๋ฐ / ๋๋ ์์"์ ์ฝ์ด์ผํ๋ค๊ณ ์๊ฐํ์ง๋ง, AND์ ์์ ์ ์ด๋ฏ๋ก OR๋ฅผ ํ์ ํ ํ์๊ฐ์๋ ์ธ์ด์ ๊ณตํํฉ๋๋ค. ์ฆ, ์๋น์ค๋ฅผ ์์ฑํ๊ณ ์์ํ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ค์ด์ง๋ง ๋ ๋ค ์ํํด์ผํ๋ค๋ ์๋ฏธ๋ ์์ต๋๋ค.
์ฐ๋ฆฌ ๋ชจ๋๋ ๋๋ฌด ๋ง์ ์ผ์ ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ๋๋์ง ์๊ณ ์์ต๋๋ค.
์, ๋๋ฉ์ธ์ ๊ฒฝ๊ณ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ค๋ ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ๋ด๊ฐ "๊ถ์์ "์ด๋ผ๊ณ ์๊ฐํ์ง ์๋๋ค
์ ๋ ์คํ ์์ค ์ด๋์ ์ข์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ถ์ผ์น๋ฅผ ๊ฐ์ง ์ ์์ง๋ง ์ฌ์ ํ ํจ๊ป ์์ต๋๋ค. ๋นํธ ์ฝ์ธ ์ปค๋ฎค๋ํฐ ๋ด์ ์ ์์ ๋์ฐํ๊ณ ์ ๋ ์ฌ์ ํ ๊ทธ๊ฒ ๋๋ฌธ์ ๊ธด์ฅํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์๋ฅผ ์ง์ผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ด๋ณ ์๊ฐ์ผ๋ก https://github.com/docker/compose/issues/4650 ์ด ์ค๋ ๋์ ์์ฒญ๊ณผ ๋์ผํ์ง ์์ง๋ง (๋ซ์ ๋ ํ์ ํ๋๋ก) ๋ด ์ฌ์ฉ์ ์์ฉํ๋ ์ฌ๊ฒํ ๋ฅผ ์์ฒญํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๊ธฐ์ ๋ ผ์๋๋ ํ๋๊ทธ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋๋ผ ํธ๋ฆฌ ๋๋ฆฌ์ ๋๋ค.
์ฌ๋ฌ ํ์ผ์ ์ ์ํ๋ ์์ด๋์ด๊ฐ ์ ๋ง ๋ง์์ ๋ญ๋๋ค. ๊ทธ๋ฌ๋ ์๋ณธ์ ํฌํจํ์ฌ -f
๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ํ์ผ์ ๋ชจ๋ ํฌํจํ๋ ๊ฒ์ ์ด ๊ณผ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ค์ ๋ก ์ ์๊ฒ ๋ง๋ ๋ ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค (์๋ PS ์ฐธ์กฐ) : ์คํํ๊ณ ์ถ์ง ์์ ๋ชจ๋ ์๋น์ค๋ฅผ docker-compose.override.yml
๋ฃ์ผ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ ์์ ์ธ ์์์๋ docker compose -f docker-compose.yml up
๋ฅผ ์ฌ์ฉํฉ๋๋ค (์ด๋ ์ผํ์ฑ ๋ช
๋ น์
๋๋ค). ๋ชจ๋ ์ฐ์ ํธ์ถ์์ ์ฌ์ ์๊ฐ ์์ฑ๋ฉ๋๋ค.
์ ๋ฐ์ ์ผ๋ก ์ด๊ฒ์ ๋ชจ๋ ๋งค์ฐ ์ง๊ด์ ์ด์ง ์๊ณ ์ฝ๊ฐ ๋ถ๋ง์กฑ ์ค๋ฝ์ต๋๋ค. ์ถ๊ฐ ์ถ๊ฐ :
์๋น์ค ๋นํ์ฑํ ์ต์ ์ ํนํ ๋ ๋ณต์กํ ์ฌ์ ์์ ์ ํฉํฉ๋๋ค.
-f
์ต์
์ ์ต์ํ์ด์ง๋ง ๊ทธ๋ค์ง ์ง๊ด์ ์ด์ง ์์ต๋๋ค. ์ถ๊ฐ ์ฌ์ ์๋ฅผ ์ถ๊ฐํ๋ ๋ ๋ค๋ฅธ -F <name>
์ต์
์ ๋งค์ฐ ํ์ ํ ๊ฒ์
๋๋ค (์ : docker-compose..yml
ํ์ผ์ด ์์ฑ๋๋ ๋๋ ํ ๋ฆฌ๋ก : ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ํจ๊ป ์ด๊ฒ์ /etc/apache/sites.available
-> /etc/apache/sites.enabled
์ ์ ์ฌํ๊ฒ ๊ฐ๋ ฅํฉ๋๋ค.
๋ค๋ฅธ ํํธ์ผ๋ก : ๋๊ตฌ๋์ด ๋์์ ์๋ฎฌ๋ ์ดํธํ๊ธฐ ์ํด ์์ simpe ๋ํผ ์คํฌ๋ฆฝํธ (ํจ์)๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค.
์ถ์ : ๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋๋ฒ๊ฑฐ๋ฅผ ์๋น์ค๋ก ์ ์ํ๋ ๊ฒ์ ๋๋ค. ๋ถ๋ช ํ์ด ์๋น์ค๋ ํญ์ ํ์ํ ๊ฒ์ ์๋์ง๋ง ์ ๋๋ก ์๋ํ๋ ค๋ฉด ๋งํฌ (๋ณด์์์ ์ด์ ๋ก)๊ฐ ํ์ํฉ๋๋ค.
์ต์ 2๊ฐ ์ข์ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก :
๊ฐ์ ํ๋ก์ ํธ์์ ์ผํ๋ ํ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ผ๋ถ๋ AWS ๊ด๋ฆฌ ํ ์๋น์ค์ ์ก์ธ์ค ํ ์ ์์ง๋ง ์ผ๋ถ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋ก์ปฌ ์ปจํ ์ด๋๋ก ์คํํด์ผํฉ๋๋ค. ๋ฐ๋ผ์ ๋ด ์ํฌ ํ๋ก์ ๋ฐ๋ผ _always_ ๋๋ _never_ compose constellation์ Redis ๋ฐ MySQL ์ปจํ ์ด๋๊ฐ ํ์ํฉ๋๋ค.
์ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์ฌ๋ฌ compose ํ์ผ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ด๋ฆฌ ์๋ค๊ณ ๋จํธํ๊ฒ ๋งํ ๊ฒ์ ๋๋ค. ๊ฒน์น๋ ์ ๋๋ ์ฝ๋ฏนํฉ๋๋ค. ์ฌ๋ฌ ํ์ผ์ ์ ์งํ๋ ๊ฒ์ ํ๊ฑด์ ๋๋ค. ๋๊ธฐํ๋์ง ์๊ณ ํผ๋์ ์ผ๊ธฐ ํ ๊ฒ์ ๋๋ค. ์์งํ ๋๊ตฐ๊ฐ๊ฐ _any_ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด์ด ์ต์ ์ ์ง์งํ๊ฒ ๋ฐ์ ๋ค์๋ค๋ ์ฌ์ค์ ์ฝ๊ฐ ์ถฉ๊ฒฉ์ ๋ฐ์์ต๋๋ค.
ํฐ ๊ตฌ์ฑ ๋ธ๋ก์ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ์ง ์๊ณ ์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ํ์ฑํ ๋ฐ ๋นํ์ฑํ ํ ์ ์๋ค๋ ๊ฒ์ ๊ทธ ์์ฒด๋ก ํ๋ฅญํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ธ์ ๊ฐ compose๊ฐ ๋ณ์๋ฅผ ๊ตฌ์ฑ์ ์ฝ์ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ๊ฒ๋๋ฉด์ด ๊ธฐ๋ฅ์ ์๋์ผ๋ก ๊ธฐํ ๊ธ์์ ์ผ๋ก ๋ ๊ฐ๋ ฅ ํด์ง๋๋ค. ๊ทธ๋๊น์ง๋ _ ๋จ์ํ _ ์ ์ฉํฉ๋๋ค.
@campadrenalin์ ์์ ํ ๋์ํฉ๋๋ค.
๋ด๊ฐ ์ดํดํ๋๋๋ก์ด ์ ์ฒด ํ ๋ก ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ 2๋ฅผ ๊ตฌํํด์ผํ๋ ์์ฃผ ์ข์ ์ด์ ๋ฅผ ์ ๊ณตํ๋ ๋ง์ ์ฌ๋๋ค๊ณผ ๊ฐ๋ฐ์๊ฐ ๊ฑฐ๋ถํ๋ ์ด์ ์ ๋๋ค. ๋๊ตฐ๊ฐ ๊ฐ์ค ์ ์ผ๋ก์ด ๊ธฐ๋ฅ์ ์กด์ฌ๋ฅผ ์๋ชป ํด์ํ๊ณ ๋ค๋ฅธ ๊ด๋ จ์๋ ๊ธฐ๋ฅ์ ์์ฒญํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. .
OT :
๊ทธ๋ฌ๋ ์ธ์ ๊ฐ compose๊ฐ ๋ณ์๋ฅผ ๊ตฌ์ฑ์ ์ฝ์ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ๊ฒ๋๋ฉด์ด ๊ธฐ๋ฅ์ ์๋์ผ๋ก ๊ธฐํ ๊ธ์์ ์ผ๋ก ๋ ๊ฐ๋ ฅ ํด์ง๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ค๋ซ๋์ ์ฌ์ฉํ ์ ์์์ต๋๊น? https://docs.docker.com/compose/compose-file/#variable -substitution์ ์ฐธ์กฐ .env
ํ์ผ (์ : ์์ค ์ฝ๋ ์์น, ํฌํธ ๋งคํ ๋ฑ)์ ์ฌ์ฉํ์ฌ Compose ๊ฐ๋ฐ ํ๊ฒฝ์ ์ฌ์ฉ์ ์ ์๋ฅผ ํ์ฉํ๋ ๋ฐ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. compose ํ์ผ ๋ฒ์ 2.1๋ถํฐ ์ ์คํ์ผ ๋ณ์ ๊ธฐ๋ณธ๊ฐ ( ${VARIABLE:-default}
/ ${VARIABLE-default
)๊ฐ ์ง์๋ฉ๋๋ค.
๋ด๊ฐ ์ดํดํ๋๋๋ก์ด ์ ์ฒด ํ ๋ก ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ 2๋ฅผ ๊ตฌํํด์ผํ๋ ์์ฃผ ์ข์ ์ด์ ๋ฅผ ์ ๊ณตํ๋ ๋ง์ ์ฌ๋๋ค๊ณผ ๊ฐ๋ฐ์๊ฐ ๊ฑฐ๋ถํ๋ ์ด์ ์ ๋๋ค. ๋๊ตฐ๊ฐ ๊ฐ์ค ์ ์ผ๋ก์ด ๊ธฐ๋ฅ์ ์กด์ฌ๋ฅผ ์๋ชป ํด์ํ๊ณ ๋ค๋ฅธ ๊ด๋ จ์๋ ๊ธฐ๋ฅ์ ์์ฒญํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. .
๋๋ ์ด๊ฒ์ด ์ฝ๊ฐ ๊ฑฐ์น ์ง ๋ง ๋ณธ์ง์ ์ผ๋ก ์ ํจํ๋ค๊ณ ์๊ฐํฉ๋๋ค. @rysiekpl์ ์์ฃผ ์ข์ ์์ฝ์
๋๋ค.
๊ทธ๋์ @ shin-, ์ฐ๋ฆฌ๋์ด ๋ฌธ์ ์ ๋ํ ๊ฒฐ์ ์ ๋ ๊ฐ๊น์ ์ก์ต๋๊น? ๊ทธ๋ฅ ๋ซ์ ์ง ์๋๋ฉด ์ต์
2์ ๋ํ PR์ ๊ตฌํ / ์๋ฝํ ๊น์?
๋๋ ๋น์ ์ ์ฐ๋ ค๋ฅผ ์์ ํ๋ณด๊ณ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ค์ ์์ ๋ณํ์ด์ง๋ง ๋ง์ ์ฌ๋๋ค์๊ฒ ํจ์ฌ ๋ ํธ๋ฆฌํ ์ํฌ ํ๋ก์ฐ์ ๋ํด ํจ์ฌ ๋ ๋ง์ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋๊ตฐ๊ฐ ์ ์ฌ์ ์ผ๋ก ์ด๊ฒ์ ๋จ์ฉ ํ ์ํ๋ณด๋ค ์ด์ ์ด ๋ ํฌ๋ค๋ ๊ฒ์ ๋ด ๋๋ค.
์ด์จ๋ docker-compose๋ ์ฅ๊ธฐ๊ฐ์ ๊ฑธ์ณ Docker ์คํ์ ์ ํธํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ชจ๋ ์ฌ๋์ด ์๋ก์ด v3 ํ์๊ณผ docker stack
๋๊ตฌ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ค์ (๋ ธ๋ 1 ๊ฐ ํฌํจ)์์ ์คํ์ ์ฌ์ฉํ์ฌ ๋ค์์ ์ง์ ํ ์ ์์ต๋๋ค.
deploy:
mode: replicated
replicas: 0
๋ณต์ ๋ณธ์ด ์ ํ ์์ผ๋ฉด ์๋น์ค๊ฐ ์คํ๋์ง ์์ต๋๋ค.
envsubst์ ๊ฐ์ ํ๊ฒฝ ๋ณ์ ๋์ฒด๋ฅผ ์ ์ฉํ๋ ค๋ฉด ํด๋น yml์ ์์ฑํ๊ธฐ ์ํด ๋ค๋ฅธ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ yml์์ ์๋ฆฌ ํ์์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
deploy:
mode: replicated
replicas: ${R}
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํ์ญ์์ค.
export R=0
docker stack deploy stack1 --compose-file=<(envsubst <docker-compose.yml)
๋ฐ๋ผ์ docker-compose
๊ฐ ์ฅ๊ธฐ์ ์ผ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ ์ด๋ฏธ ์กด์ฌ ํ๋ docker-compose
์ด dodo์ ๊ธธ์ ๊ฐ๊ณ ์๋ค๋ฉด, "๋๊ตฐ๊ฐ ์ด์ํ ๊ธฐ๋ฅ์ ์์ฒญํ ๊ฒ"์ด ์ด๋ป๊ฒ ์ง์ง ๋ฌธ์ ์ผ๊น์?
docker-compose๋ ์ฅ๊ธฐ๊ฐ์ ๊ฑธ์ณ docker stack์ ์ ํธํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๋ฐ๋ผ์ docker-compose๊ฐ ์ฅ๊ธฐ์ ์ผ๋ก ์ฌ์ฉ๋์ง ์์ ๊ฒฝ์ฐ
์ ๊น, ์ํธ? docker-compose
์ (๋) ๋ฌด๋ฆฌ ๊ด๋ฆฌ์๊ฐ ๊ฑฐ์ ํ์ํ์ง ์์ ๊ฐ๋ฐ ์ํฌ ํ๋ก์ ๋ง์ ์ฌ๋๋ค์๊ฒ ํต์ฌ์
๋๋ค. ์ด์ ๊ด๋ จํ์ฌ Docker์ ๊ณต์ ์ฑ๋ช
์ ์๋ ค ์ฃผ์๊ฒ ์ต๋๊น?
๋๋ ์ด๊ฒ์ ์๋ชป ์ฝ๊ณ ์์์ง ๋ชจ๋ฅด์ง๋ง, ๋์ปค ๋ผ์ ๋์ปค ์คํ์ด ๋์ปค ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฐ๋ค. ๋ ๋ฆฝํ ์คํ๋ผ์ธ ์์คํ ์์ ์ด๋ฌํ ํญ๋ชฉ์ ๊ตฌ์ฑ ํ ์ ์์ต๋๊น?
๋ ๋ฆฝํ ์คํ๋ผ์ธ ์์คํ ์์ ๊ตฌ์ฑ ํ ์ ์์ต๋๊น?
์, ์คํ๋ผ์ธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์๊ฒ๋ docker-swarm์ ์คํ์ด ๊ฒฐ๊ตญ docker-compose ๊ธฐ๋ฅ์ ์์ ์งํฉ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ค๋ช ์ ํ์ผ์ด ์ด๋ฏธ ๋งค์ฐ ์ ์ฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ๊ฑด๋,์ด ์ ํ์ด ๋๋ฌด ์ด๋ ต์ง ์์ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ๋ณผ ์์๋ ๊ฐ์ฅ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ ๋ผ๋ฅผ ์คํ๊ณผ ๋ณ๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๋ ๊ฐ ์ด์์ ๋ ธ๋์์ ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ๊ด์ฌ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ์ค๋ฒ ํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋๋ฉด ๋ด๊ฐ ๋ชจ๋ ๊ฑธ ์คํดํ๊ณ ์์์ง๋ ...?
์ต์
2์ +1!
๊ทธ๋ฆฌ๊ณ ๋๋๋ ์ปค๊ฐ ์ค์ ์คํ์ ์ ๋ฆฌํ๊ฒ ๊ตฌ์ฑ๋๋ ๊ฒ์ด ์ปค๋ฎค๋ํฐ์ ํฐ ๋จ์ ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Docker compose๋ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค !!
@tberne ๋์ํฉ๋๋ค. docker-compose๋ ๊ฐ๋จํ๊ณ ๊ฐ๋จํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ ์งํ๊ธฐ ์ํด ํฌํํด์ผํฉ๋๋ค
ํค, ์ผ๋ง๋ ๊ด๋ฒ์ํ ํ ๋ก ์ ๋๊น! ์ด ์๊ฒฌ์ ๋ง์ ๊ด์ฌ์ ๊ธฐ์ธ์ด์ง ๋ง์ญ์์ค. ๋จ์ง 2 ์ผํธ์ ๋๋ค.
์ฒ์์๋ enabled
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ก ๋ค์์ ์๊ฒฌ์ ๋์ํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ทธ๋ฃน ๋ณ ๋ถ๊ธฐ ์ ์์ ๋ํ ์ ์์๋ณด๊ณ ์ด๋ฅผ ์ข์ ์์ด๋์ด๋ก ๊ฐ์ฃผํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ Dobi์ ๋ํด ์ฝ๊ณ ์ฌ์ฉํด ๋ณด์๊ณ ์ง๊ธ ๋ด ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ๊ณ ๊ณ์ ์ฝ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋๋ ์ผ๋ถ ๋ฐ๋ก ์๋ ๋์ํ์ง๋ง @ shin-์ ์ฃผ์ฅ์ ์ฝ๊ณ ์ถฉ๋ถํ ์ข๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๋ด ํ์ฌ ์๋ฃจ์ ์ ์ผ๋ถ docker-compose yamls๋ฅผ ๋ง๋ค๊ณ docker-compose๋ฅผ ์๋์ผ๋ก ์คํํ์ง ์๋๋ก ์ผ๋ถ bash ๋ํ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์น ์ฌ์ดํธ๋ฅผ ์คํํ๋ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์
๋๋ค ( ./docker/scripts/up
์คํฌ๋ฆฝํธ).
#!/usr/bin/env bash
def_opts="-d"
cd "$(dirname "$0")"/../
# A separate bash file with functions like: get_args, add_hosts...
. ./functions.sh
docker-compose -p ${PROJECT} up ${def_opts} $(get_args "options services" "$@") && \
# Adding host to /etc/hosts
add_hosts "$HOSTS" web && \
add_hosts "$HOSTS_MAIL" mail
์ต์ 2 ๋๋ 3์ ํฐ +1.
์ต์ 2 ๋๋ 3์ ๊ฒฝ์ฐ +1.
๋ํ ์ ์ ๋ "๊ทธ๋ฃน"๊ฐ๋ ์ด ํฅ๋ฏธ๋กญ๊ฒ ๋ค๋ฆฝ๋๋ค!
์ต์ 2์ ๊ฒฝ์ฐ +1
_ +1 on option x
๊ฐ ๋๋ฌด ๋ง์์ ์๋ ๋ช
์ธ์๋ ์ฐพ์ ์ ์์ต๋๋ค. ๋์ ๊ฒ์๋ฌผ ์๋์ ๋ฐ์ ๋ฒํผ์ ์ฌ์ฉํ์ธ์ ._
์๋ก์ด ์์ด๋์ด๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด :
๊ธฐ๋ณธ ๋ฐฐ์จ ์ 0
์ค์ ํ ์ ์์ต๋๊น?
web:
image: busybox:latest
command: echo 'scaled'
scale: 0
์ฌ๋๋ค์ด ๋ช ๋ ์ ๊ธฐ๋ค๋ ธ ๊ธฐ ๋๋ฌธ์ ์ต์ 2๋ฅผ ์ํํด์ผํฉ๋๋ค (๋์ ์์ํ์ง ์์ ์๋ ์์ต๋๋ค). ๊ทธ๋ฐ ๋ค์ ๋๊ตฌ๊ฐ ๋๋ฌด ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ docker-compose๋ฅผ ์์ ์ ๊ตฌ์ฑ ๊ด๋ฆฌ์๋ก ๋ํํฉ๋๋ค. ํ๊ณ ์๋ค. 2 ๋ ์์ ๋๊ตฐ๊ฐ๋ ์์ ์ ๋ ๊ฐ๋ ฅํ ๋์ปค ๊ตฌ์ฑ์ ๋ง๋ค ์๋ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋ง์ ์๊ฐ ๋์ ๊ณต๊ฐ๋์์ต๋๋ค.
์ฅ๊ธฐ์ ์ผ๋ก ์ง์ ํ ์ต์ ๊ทธ๋ฃนํ๋ฅผ ๊ณ ๋ คํด์ผํฉ๋๋ค. ์ผ๋ถ๋ ๋น๋์๋ง ๊ด๋ จ์ด ์๊ณ ์ผ๋ถ๋ ์คํ์๋ง ๊ด๋ จ์ด ์๊ณ ์ผ๋ถ๋ ์ํธ ์ ์ ๋๋ค (์ ์ด๋ ์คํ์ ์ํด ์ค์ฒฉ ๋ ์ด์ด๋ฅผ ์ํ๊ฑฐ๋ ๋ถ๋ฆฌํ๊ณ ๋น๋ ์น์ ์ ๊ฐ๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋จ). ํ์ฌ๋ ๊ตฌ์ฑ์ ๋ง์ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ฒ์ 5์์ ๋ชจ๋ ๊ฒ์ ๋ฆฌ๋ฉ์ดํฌํ๋ ๊ฒ ๋ฟ์ด์ง ๋ง ๊ทธ ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฐ์ ธ ์ค๋ ๊ฒ์ ๋๋ค (์ฃผ๋ก ์ฌ์ฉ์ ๋งคํํ๋ ค๊ณ ํ๊ธฐ๋ณด๋ค๋ ๊ธฐ์ ์์ค ๋๋ฉ์ธ์์ ์ค์ ๋ฅผ ๋ํ๋์ผ๋ก์จ ๊ธฐ๋ฐ ๋๋ฉ์ธ ๋๋ ์ง๋์น๊ฒ ๋จ์ํ ๋์ ์ฌ๋ฐ๋ฅธ ๋ชฉํ ์์ ํด๋น ๋ชฉํ์ ๋ํ ๊ตฌ์ฑ ๊ณ์ธต์ ์์ฑํ์ญ์์ค. ๋ฐ๋๋ก ์ํ ํ ์ ์์ต๋๋ค.) ๋๋ ๊ทธ ์ํฉ ๋๋ฌธ์ ๋น ๋ฅธ ์์ ์ด ์ ๋นํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ต์ 2 ๋๋ 4์ ๊ฒฝ์ฐ +1
ํ์ฌ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ๊ณํ์ด ์๋ค๋ฉด, ๊ทธ๋ฌํ ์๋น์ค (๋๋ ์์ )๋ฅผ ์ปดํฌ์ง์ ์์ ์คํํ๋ ๋ฐฉ๋ฒ์ด docker-compose์ ๋ฌธ์๋ก ์์ฑ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ์ ์ค๋๋ ์ค๋ ๋์ด๋ฉฐ docker-compose
๊ฐ start_์์ ์คํ๋์ง ์๋ _services์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก test
์๋น์ค๋ ์ถ๊ฐํ๋ฏ๋ก ๋ค์ ์์
์ ์ํํ์ต๋๋ค.
entrypoint
์ ์ฌ์ ์ํฉ๋๋ค.์๋ก์ด entrypoint
์์ ์ฌ์ฉ ๊ฐ๋ฅํ tty
๊ฐ ์๋์ง ํ์ธํฉ๋๋ค ( docker-compose run
๋ ๊ธฐ๋ณธ์ ์ผ๋ก --tty
๋ฅผ ์ฌ์ฉํ๊ณ up
๋ ์ฌ์ฉํ์ง ์์).
# Check if there is a tty
if [ ! -t 1 ] ; then
echo "No tty available."
exit 0
fi
docker-compose run
๋ก ์์๋๋ก ์คํ๋๋ ๋์ tty
(์ : docker-compose up
) ์คํํ๋ฉด ํญ์ ์๋น์ค๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.
@paulodiovani ์๋ฃจ์ ์ด๋ผ๊ธฐ๋ณด๋ค ํดํน์ฒ๋ผ ๋ณด์ ๋๋ค.
๊ธฐ๋ฅ ์์ฒญ์ +1.
์๋ฌด๊ฒ๋ํ์ง ์๋ ๋ช
๋ น์ ๊ฐ๋ ๊ฒ๊ณผ ๊ฐ์ ํดํน์ ์ปจํ
์ด๋๊ฐ ์คํ๋์ง ์๋๋ผ๋ ์ฌ์ ํ ๋น๋๋๊ณ ์ด๊ธฐํ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์ ๊ณต๋ ์ธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ docker-compose
๋ช
๋ น์ ํธ์ถํ๋ ๊ฐ๋จํ bash ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ณตํ์ฌ ํ๋ก์ ํธ์์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ด์ ./docker-compose.sh -e testing up
๋ฅผ ์ํํ๋ฉด ๊ฒฐ๊ณผ๋ docker-compose -f docker-compose.yml -f docker-compose.testing.yml up
ํ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
./docker-compose.sh up
๋ฅผํ๋ฉด ์์๋๋ก ์ผ๋ฐ docker-compose up
์ป์ต๋๋ค.
๋ฐ๋ผ์ ๋ด -e ${environment}
์ต์
( --env
์ ์ฝ์)์ ๊ธฐ๋ณธ์ ์ผ๋ก -f docker-compose.yml -f docker.compose.${environment}.yml
์ ๋ณ์นญ์
๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก docker-compose.yml
๋ ๊ธฐ๋ณธ / ๊ธฐ๋ณธ ์์ฑ ํ์ผ์ด๋๊ณ docker-compose.testing.yml
์ ๊ฐ์ ํ์ผ์ ํ์ฅ๋ช
์ด๋ฉ๋๋ค.
์ด๊ฒ์ ์ ์์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ์ฌ docker-compose
๋ช
๋ น์ ์ด๋ค ํ์ผ์ ์ด๋ค ์์๋ก ํฌํจํ ์ง ๋ชจ๋ฅด๋ ์ฌ์ฉ์์ @acran ๋ฌธ์ ๋ฅผ ๋ค์ ํด๊ฒฐํฉ๋๋ค. ์ผ๋ถ๋ ๋ ๋ณต์กํ compose ํ์ผ ์กฐํฉ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ฐ๋ ฅํ ์๋ฃจ์
์ ์๋์ง๋ง docker-compose
๋น์ทํ ์์
์ ์ํ ํ ์ ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ถ๋ถ์ docker-compose
ํ์ผ์ ์์ํ๋ ๊ฐ๋ฅ์ฑ์ด docker-compose.
์ ๋ .yml
์ ๋ ํญ์ ๊ฐ์ ๊ธด ๋ช
๋ น (๊ต์ฒด ์์ ์
๋ ฅํด์ผํฉ๋๊น, ์ด์จ๋ docker-compose -f docker-compose.yml -f docker-compose.testing.yml up
) ํ
์คํธ ํ๊ฒฝ์ ๋ํด ํ๋์ ์ถ๊ฐ ์๋น์ค ๋ง ํ์ํ ๊ฒฝ์ฐ?
envsubst๊ฐ ํ์ ์์ผ๋ฉฐ docker-compose config๊ฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ํ ํ ๋ค์ docker ์คํ์ด stdin์์ ๊ฐ์ ธ์ต๋๋ค.
docker-compose config | docker stack deploy --prune --compose-file -
docker-compose .env ๋์ฒด๋ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
@kogli ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์ต์ ์ ์ ํํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์์ ์ ๋ด๊ฐ ๋งํ๋ฏ์ด:
๋ชจ๋ ์๋ฃจ์ ์ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์์ ๋ ์ข์ ๊ฒ์ด๊ณ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋ ๋์๊ฑฐ๋ ์ธ๋ชจ ์์ ๊ฒ์ ๋๋ค. ๋ฌด์ธ๊ฐ๊ฐ ๊ตฌํ๋๋ฉด ์์ํ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์๋ด๋ ๊ฒ์ด ํ๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@ shin- ๋๋ ๋น์ ์ด ๋ฌผ์ด๋ณผ ์ฌ๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค : ์ด๊ฒ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๊น? ํ์ ํ์ฌ ์์น, ๋์์ธ์ด ์ผ๋ง๋ ์ด๋ ค์ด์ง, ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์์๋ ๋ง์ ๋๊ตฌ๋ฅผ ๊ณ ๋ คํ ๋ ์ฌ๋๋ค์๊ฒ ์ด๊ฒ์ด ์ผ์ด๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ๋ ์ฌ์ธ๊น์? ์ฌ๊ธฐ์ ์ธ๊ธ ํ ๋ชจ๋ ์ฌ๋์ด ์๋๋ผ๋ฉด ๋๋ถ๋ถ์ ์ฌ๋๋ค์์ด๋ฅผ ์ฒ๋ฆฌ ํ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
์ด๊ฒ์ ๋ซ๋ ๊ฒ์ ๊ฝค ์ข์ ๊ฒ ๊ฐ๊ณ , ์ค์ํ ์ผ์ ์ง์คํ ์ ์์ผ๋ฉฐ, ์๋ฌด๋ ํ ๋ฆฌํ์คํธ๋ฅผํด์ผํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ชจ๋ ์๊ตฌ๋ฅผ ๋์์ ์ถฉ์กฑํ๋ ๋ฐฉ๋ฒ์ ๊ถ๊ธํดํ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ๊ทธ๋ฅ ๋ค๋ฅธ ๊ฒ์ ๋ง๋ค์ด์ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋๊ธฐ ์ํด ๊ฒ์ ํ ์๋ ์์ต๋๋ค.
๊ธฐ๋ก์ ์ํด : ๋ด ์๋ฃจ์ ์ ์๋ฒฝํ์ง ์์์ง๋ง ์ข ์์ฑ์ ์ค์นํ๊ณ ๋ง์ ๊ฒ์ ์์ ํ๊ณ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ ๋ฐ ๊ฑธ๋ฆฐ 2 ์ผ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค (๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ Docker๋ฅผ ์ฌ์ฉํ์ต๋๋ค). Docker ๋ฐ Docker Compose๋ฅผ ์ ์ผํ ์ข ์์ฑ์ผ๋ก ์ฌ์ฉํ๋ ๋จ 3 ๊ฐ์ ๋ช ๋ น. ๋ค, ์ ๊ฐ ์ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฝ๋๊ฐ์์์ต๋๋ค. ์, ๋ช ๋ น์ ์คํํ๋ ์๋ฑํ ์์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค, ๋ช ์ฌํด์ผ ํ ๊ฒ์ด ์กฐ๊ธ ๋ ์์ต๋๋ค. ์ํค ํ์ด์ง์์์ด๋ฅผ ๋ค๋ฃจ์์ต๋๋ค. Preety good, ๋ด๊ฐ ๊ทธ๋ ๊ฒ ๋งํ๋ฉด Docker Compose๊ฐ ๊ทธ ์ผ์ ํ์์ ์๋ฏธ ํฉ๋๋ค .
์์ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๊ณ์ ๋ ผ์ํ๋ ๋ฐ ์๊ฐ ๋ญ๋น์ ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ๋ฌด์์ ํด์ผํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ ์ ์ฌ๊ธฐ์ ๋ฉ์ถ๊ณ ์ด์ ๋ํด ์ง๋ฌธํ๊ณ ์๊ฒฌ์ ์ ์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ซํ๋ฉด ๊ทธ๋ค์ ๋ ๋นจ๋ฆฌ ๋ค๋ฅธ ๊ฒ์ ์ฐพ๊ฑฐ๋ ๋ง๋ค ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์๊ธฐ๋ฅผ ๋๋ณผ ์ค๋ ๋๋ฅผ ํ๋ ๋ ์ป์ต๋๋ค.
ํธ์ง : ์ข์ ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค. PR์ ์๋ฝ ํ ๋ช ํํ ๊ธฐ์ค์ด์๊ณ ํต์ฌ ํ์ PR์ ๊ด์ฌํ๊ฑฐ๋ ๊ฐ๊น์ด ์ฅ๋์ ๊ฒํ ํ ๊ณํ์ด์๋ ๊ฒฝ์ฐ " ๋ฌธ์ ", ๊ทธ๋ฅ ์์ด๋์ด.
๋ฌธ์ ๋ชฉ๋ก์ ๋ณต์กํ๊ฒ ๋ง๋ค ์ด์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ๋ง์ ์์ด๋์ด๊ฐ ์ข๋ค๊ณ ์๊ฐํ์ง๋ง, ์ข๋ ๋์ ๋ ๋ค๋ฅธ ๊ณณ์ ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฑฐ์ 3 ๋ ์ด ์ง๋๋ฉด ์ธ์ ๊ฐ ์ํฉ์ด ๋ฐ๋ ๋ ์ธ์ ๋ ์ง์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด๊ฑฐ ๋ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด โโ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ ๋ง ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ๊ตฌํํ๋ ๋ฐ ํ๋ฃจ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ 2 ๋ ๊ฐ์ ๋ ผ์ ํ์๋ ์ฌ์ ํ ์๋ฌด๊ฒ๋ ์์ต๋๋ค. ์ฌํผ.
@rubycut ๊ทธ๋ ์ต๋๋ค. ์์ "์์ ์์น"์ด ์ ์ฉ์ฑ๊ณผ ์ฌ์ฉ์
@rubycut ํ ํฌ๋ ์ ๋ ดํฉ๋๋ค. ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ์ธ์. ํ ์ ์์ผ๋ฉด PR์ ๋ณด๋ด๊ณ ํ ์ ์์ผ๋ฉด๋ณด๊ณ ํ๊ณ ๊ธฐ๋ค๋ฆฌ์ญ์์ค.
@wangwenpei ๋๋ด ํด? ์ฐ์ , ๋น์ ์์ด ํ๋ก์ ํธ์ ๊ด๋ฆฌ์๊ฐ ์๋๋๋ค. ๋ฉ์ธํ ์ด๋๊ฐ์ด ์์ด๋์ด๋ฅผ ๋ฐ์๋ค์ด๊ณ "help wanted"ํ๊ทธ๋ฅผ ๋ถ์ด๋ฉด ๋๊ตฐ๊ฐ ํ ๋ฆฌํ์คํธ์ ๊ธฐ์ฌํ ์์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๊ด์ฌ์ด ์๋ค๊ณ ๋งํ์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฝ๋์ง ์์ผ๋ฉด ์ ๊ท์ฐฎ๊ฒ ์์ฒญ์ ๋์ด ๋น๊ธธ ๊ฒ์ ๋๋ค.
์ฐธ๊ณ ๋ก "์ฝ๋"๋ ์ด๋ฏธ ์์ต๋๋ค. # 3047
@wangwenpei ์ , # 3047, ํ ์์ฒญ์ด ์์ต๋๋ค ...
2 ๋
๋๊ฒ ์ด์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ๋ฌธ์ ๋ซ์์ต๋๋ค
https://github.com/docker/compose/issues/1896#issuecomment -322285976์ ๊ฐ์กฐ ํ์๋ ์ด์ ๋๋ฌธ์
https://github.com/docker/compose/issues/1896#issuecomment -322285976์ ์ ๊ณต๋ ์ธ์๊ฐ ํ ์์ฒญ๊ณผ ์ด๋ค ์ ์ผ๋ก๋ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ์์งํ ๋งํ๋ฉด ํ๊ฐ๋ฉ๋๋ค.
- ์๋น์ค ๋? ์ค๊ณ ์ ์๋น์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฑํ๊ธฐ ์ํด ๋ค๋ฅธ ์๋น์ค์ ์ํธ ์์ฉํ๋ ๋ช ํํ๊ฒ ์ ์ ๋ ์ฅ๊ธฐ ์คํ ํ๋ก์ธ์ค์ ๋๋ค. ์ด๊ฒ์ด Compose๊ฐ ์๋ํ๋ ๊ธฐ๋ณธ ๊ฐ์ ์ด๋ฉฐ ์ฐ๋ฆฌ๊ฐ ๊ตฌํํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์๋์ง๋ง ๋๋ถ๋ถ์ ์ค๊ณ๋ฅผ ์๋ดํฉ๋๋ค.
- ์ด ์ ์์ ๋ฐ๋ฅด๋ฉด "๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋ ์๋น์ค"๋ ์ค์ ๋ก ์๋น์ค๊ฐ ์๋๋๋ค [1]. ์ด๋ ์ปจํ ์ด๋์์ ์คํ๋๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๊ฐ ์๋๋ผ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์๋ํ๋ ๋ฏธ๋ฆฌ ์ ์ ๋ ์์ ์ ๊ฐ๊น์ต๋๋ค.
By that definition, a "service that is not started by default" is not really a service
์ฃผ์ฅ์ด ์ฌ์ค์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋ ์๋น์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋ ์๋น์ค ์ผ๋ฟ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋๋์ง ์ฌ๋ถ๋ ์๋น์ค๊ฐ ์ค๋ ์คํ๋๋์ง ์ฌ๋ถ, ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ์ธ์ง ์ฌ๋ถ์ ๋ํด ์๋ฌด ๋ง๋ํ์ง ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋์ง ์๋๋ค๋ ์๋ฏธ ์ผ๋ฟ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ํ ํ ๋ฆฌํ์คํธ์ ๋ณ๊ฒฝ์ดํ๋ ์ผ์ด๊ธฐ๋ํฉ๋๋ค : ์๋น์ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋ ๊ฒ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ญ์์ค.
์ด๋ฅผ ์ํด ์์
๊ณผ ๊ฐ์ ์๋ก์ด ๊ฐ๋
์ ๋์
ํ ํ์๊ฐ ์์ต๋๋ค. ์ฌ์ค https://github.com/docker/compose/issues/1896#issuecomment -322285976์ ๋ค๋ฅธ ๋ชจ๋ ์ธ์๋ 2์ ๊ฑฐ์ง ์ ์ ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์๋ ํ ์์ฒญ์๋ ์ ์ฉ๋์ง ์์ต๋๋ค. ๊ทธ๋ฐ์.
์์ ์ฑ์ ์ํด :
[1] ์ด๋ค ์ฌ๋๋ค์ "์ ํ์ ์๋น์ค"๋ฅผ ์ํ๋ค๊ณ ์ธ๊ธํ์ง๋ง,์ด ๊ธ์์ ์ธ๊ธ ํ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ์๋๋๋ค. ๋ด๊ฐ ๋งํ ์์๋ ํ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ "์์ "๊ธฐ๋ฅ์ ์ํฉ๋๋ค.
์, ์ผํ์ฑ ์์
์ ์๊ฐ ์์์ง๋ง ์ ์์ ๋ฐ๋ผ _real_ ์๋น์ค์ ๋ํ
์ด๊ฒ์ ์ฌ์ฉํ์ฌ ์ผํ์ฑ ์์
์ _also_ ์คํํ ์ ์๋ค๋ ์ ์ ์ด์ ๋ํ ์ ํจํ ์ฃผ์ฅ์ผ๋ก ๋ฐ์ ๋ค์ผ ์ ์์ต๋๋ค. ์ค๋ ์คํ๋์ง ์๊ณ ํฌํธ๋ฅผ ๋
ธ์ถํ์ง ์๊ณ ์์ ํ ์ ํจํ docker-compose.yml
์์ ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ ๋ถ๋ถ์ด ์๋ _service_๋ฅผ ์ ์ํ๋ ๊ฒ์ด ์ด๋ฏธ ๊ฐ๋ฅํฉ๋๋ค.
์ฌ์ค ์ด๊ฒ์ ๋ํ ์ ์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค! _tasks_๋ฅผ ๋ณ๋์ docker-compose.yml
๋ก ๋ถํ ํ์ญ์์ค.
์ธ๊ธ ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ ์ ์ง์์ ๋ง๋ (ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฆ) ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.์ด ์คํฌ๋ฆฝํธ๋ docker-compose์ ์์นญ ๋ชฉ์ ์ ์์ ํ ๋ชจ์๋ฉ๋๋ค . ์์ ๋ด ์๊ฒฌ์ ์ฐธ์กฐํ๊ฑฐ๋ ๋จ์ํ ๋ค๋ฅธ ๋๊ตฌ๋ก ์ ํํ๋ ๊ฒ์
๋๋ค. ํ์ฌ ๋๊ตฌ ์ฒด์ธ์์ ์ฝ๊ฒ ๊ตฌํํ ์์๋์ด ์์ ๊ธฐ๋ฅ์ ํธ๋ฆฌํ๊ฒ ์ป๊ธฐ ์ํด ์ ์๋ํ๋ ๋๊ตฌ ์ฒด์ธ์
๋๋ค (๋์ปค ์์ฑ).
์ต์
2์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ์ ๋ํด ์ ๊ธฐ ๋ ์ ์ผํ ์ค์ ์ฃผ์ฅ-์ฆ, docker-compose
์ ๊ธฐ๋ณธ์ ์ผ๋ก ํน์ ์๋น์ค๋ฅผ ์์ํ์ง ์๋๋ก ์ง์ํ๋ _some way_, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์, ์๋ก์ด ๊ฐ๋
์ด๋ ๊ธฐํ ์ฌํญ ์์- be_somehow_ _some_ ์ฌ์ฉ์์ ์ํด ์ค์ฉ ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋์ด ์ฃผ์ฅ์ ์ด์ ๋ํ ์์์ ์ฌ๊ธฐ์ ์ ๊ธฐ ๋ ํฉ๋ฒ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋นํด ์๋นํ ์ฝํฉ๋๋ค.
@์ ๊ฐ์ด-
๋ฟ๋ง ์๋๋ผ [3] ์ฌ๋๋ค์๊ฒ ์ง์ ์ผ๋ก ์ ์ฉํ ๊ธฐ๋ฅ์ด๋๊ธฐ ์ํด ํ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฑฐ๋ ์ ์งํ ์๊ฐ์ด๋ ์์์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
[3] ๊ทธ๋ฆฌ๊ณ ์ด ์์ ์์ ์ ๋ "I"๋ฅผ ์๋ฏธํฉ๋๋ค. ์ ๊ฐ ํ์ฌ docker-compose์ ๋ํด ์ ๊ทน์ ์ผ๋ก ์์ ํ๊ณ ์๋ ์ ์ผํ ๊ด๋ฆฌ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํํธ์ผ๋ก๋ ํ์ฑ ์ ์ง ๊ด๋ฆฌ์๊ฐ ํ ๋ช
๋ฟ์ด๊ณ ๋ค๋ฅธ ํํธ์ผ๋ก๋ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ฌด์ํ๊ณ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํ ์์๋ ๊ธฐํ๋ฅผ ๋ญ๋นํ๋ ๊ฒ์ ๋ด๊ฐ ์ดํดํ ์์๋ ์ผ์ด ์๋๋๋ค.
# 3047์ ์ ๊ณต๋ ์ฝ๋ ๋ณ๊ฒฝ์ ์ด๋ฏธ _ [๋ง์] ์ฌ๋๋ค์๊ฒ ์ ๋ง ์ ์ฉ ํ ๊ธฐ๋ฅ์ _do_ ๊ตฌํํ๊ณ ์์ต๋๋ค _-์๋ง๋ _all_ of _their_ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ์ง ์ฌ๋๋ค์ _all_ ์๋ ์๋ ์์ง๋ง ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ์ฌ๊ธฐ์ ์์ต๋๋ค.
๋ชจ๋ ์ถ๊ฐ ์๊ตฌ ์ฌํญ-์์ ํ ์๋ก์ด ๊ฐ๋
, ์๋ก์ด ์ข
์์ฑ ๊ด๋ฆฌ, ์ต๋ cmake
์ ๊ฐ์ ๋ณต์ก์ฑ์ ๋์
ํด์ผ ํจ-๋จ์ํ ์๋ชป๋ ์ ์ ๋ฅผ ๋ฐ๋ฅด์ญ์์ค!
๋๋ ์ด์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฐพ๊ณ ์์๊ธฐ ๋๋ฌธ์ ๋ฉฐ์น ์ ์์ด ๋ฌธ์ ๋ฅผ ์ ํ์ต๋๋ค.
๋ถํํ๋ ๊ตฌํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์์ง ํ ์ ์์๋ ๊ฒ์์ ๊ณต์์ ์ผ๋ก ์ง์๋๋ ๋์์ ์ฌ๋ฌ yaml ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๊ธ์, ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์๋ ์๋น์ค์ ๋ํด ํ๋์ ์ถ๊ฐ ์ค์ ์ ํฌํจํ๋ ๋ชจ๋ ์๋น์ค์ ๋ํด ํ๋์ yaml ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น๊ตํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์๋ ์๋น์ค์ ๋ํด ์ฌ๋ฌ ๊ฐ์ yaml ํ์ผ์ ์ฌ์ฉํ๋ ์์ด๋์ด๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
๊ทธ๋์ ์ฌ๊ธฐ ๋ด +1์ด ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ต์ 2์ ํฌํํ๋ค. ์๋ฅผ ๋ค์ด
start: false
์ง์์ด์ ๊ฐ์ ๊ฒ. ์ฅ์ ์ ์ฌ๋ฌ compose.yml ํ์ผ์ด๋ ์ถ๊ฐ ๊ตฌ์ฑ ํ์ผ์ด ํ์ํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค. ํ๋์ compose.yml ๋ง ์ฝ์ผ๋ฉด ์ ์ฒด ์ฑ ์คํ์ ๋๋์ ์ป์ ์ ์์ต๋๋ค.