Compose: ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค ์ •์˜

์— ๋งŒ๋“  2015๋…„ 08์›” 20์ผ  ยท  244์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/compose

์‚ฌ์šฉ์ž๋Š” docker-compose up ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ Compose ํŒŒ์ผ์— ์œ ์ง€ ๊ด€๋ฆฌ ์Šคํฌ๋ฆฝํŠธ, ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ, ๋””๋ฒ„๊น… ์‹œ์Šคํ…œ์„ ์ •์˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์ž‘๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผํ•˜์ง€๋งŒ docker-compose up servicename ๋˜๋Š” docker-compose run servicename ... ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…

1) ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณ„๋„์˜ Compose ํŒŒ์ผ ์‚ฌ์šฉ ๊ถŒ์žฅ
2) ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๋„๋ก ์„œ๋น„์Šค์— ์˜ต์…˜ ์ถ”๊ฐ€
3) ๊ธฐ๋ณธ ์„œ๋น„์Šค ์ •์˜๋ฅผ์œ„ํ•œ ์ตœ์ƒ์œ„ ๊ตฌ์„ฑ ์˜ต์…˜ ์ถ”๊ฐ€
4) ์„œ๋น„์Šค์™€ ๊ฐ™์€ ๊ฐœ๋…์„ ์ถ”๊ฐ€ํ•˜๋˜ ์ผํšŒ์„ฑ ๋ช…๋ น ( "์Šคํฌ๋ฆฝํŠธ", "์ž‘์—…"๋“ฑ)์„์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค.)

๋ฐ์ดํ„ฐ ํฌ์ธํŠธ:

arerun kinfeature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

2) ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๋„๋ก ์„œ๋น„์Šค์— ์˜ต์…˜ ์ถ”๊ฐ€

๋‚˜๋Š” ์˜ต์…˜ 2์— ํˆฌํ‘œํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด start: false ์ง€์‹œ์–ด์™€ ๊ฐ™์€ ๊ฒƒ. ์žฅ์ ์€ ์—ฌ๋Ÿฌ compose.yml ํŒŒ์ผ์ด๋‚˜ ์ถ”๊ฐ€ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ compose.yml ๋งŒ ์ฝ์œผ๋ฉด ์ „์ฒด ์•ฑ ์Šคํƒ์˜ ๋Š๋‚Œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  244 ๋Œ“๊ธ€

์˜ต์…˜ 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

์šฐ๋ ค ์‚ฌํ•ญ :

  • ์‹œ์ž‘ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ์ตœ์ƒ์œ„ ํ•ญ๋ชฉ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด OverPowered์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ, ์ƒˆ ํ˜•์‹์ด ์ตœ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ๋™์ž‘์„ ์„ ์–ธํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์—์„œ ํŒŒ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ถ”๊ฐ€ ๋  ์ˆ˜์žˆ๋Š” ์ถ”๊ฐ€์ ์ธ ์œ ์—ฐ์„ฑ (๋ฐ ๋ฌธ์ œ)์„ ์ƒ์ƒํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, _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 ๊ฐ์ฒด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ฑ„ํƒํ•œ๋‹ค๊ณ  ๊ฐ€์ • ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ž‘์—…์€ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋น„์Šค ํ›„ ์ž‘์—… ์‹œ์ž‘
  3. ์ผ์ž๋ฆฌ๊ฐ€ ์ข…๋ฃŒ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค
  4. ???

์ด์ œ 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์— ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์šฐ์—ฐํžˆ ๋งŒ๋‚ฌ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. "์ „์—ญ"ํ™˜๊ฒฝ ๋ณ€์ˆ˜ : ์—ฌ๊ธฐ์—์„œ ์ œ์•ˆํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ extends ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.์ด ๋ฐฉ๋ฒ•์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค ...ํ•˜์ง€๋งŒ ์ด์ œ๋Š” ํ™•์žฅ ํ•  ๋Œ€์ƒ์— ๋Œ€ํ•ด image ๋ฅผ ์ •์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. , scratch ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (๋”ฐ๋ผ์„œ https://hub.docker.com/r/tianon/true/๋กœ ๋๋‚จ).
  2. "ํ™•์žฅ"์„œ๋น„์Šค : ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ MongoDB ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ๋‘ ๋ฒˆ์งธ ๋น„ํ™œ์„ฑ ์ธ์Šคํ„ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.์ด ์ธ์Šคํ„ด์Šค๋Š” ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ 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๊ฐ€ ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์ด์ œ๋Š” ๋„ˆ๋ฌด ์ œํ•œ์ ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์ถ”๊ฐ€ ํ•œ ์งํ›„์—๋Š” ํ•œ ๋ฒˆ ์‹คํ–‰ ์ž‘์—…์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šคํƒ ๋‚ด์—์„œ ์ดˆ๊ธฐ ๋ฐฐํฌ์‹œ ํ•œ ๋ฒˆ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ํ•˜๊ณ  ํ–ฅํ›„ ์‹คํ–‰์€ ์™ธ๋ถ€์—์„œ๋งŒ (์˜ˆ : ์ผ์ • / ์ด๋ฒคํŠธ, API ํ˜ธ์ถœ ๋“ฑ์„ ํ†ตํ•ด) ํŠธ๋ฆฌ๊ฑฐ๋˜์–ด ๊ธฐ๋ณธ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์ดˆ๊ธฐํ™” / ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์Šคํƒ ๋‚ด (์˜ˆ : DB ๋ฐ์ดํ„ฐ / ์Šคํ‚ค๋งˆ, ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์ฑ„์šฐ๊ธฐ ๋“ฑ)
  • ์Šคํƒ ๋‚ด์—์„œ ์œ ํ‹ธ๋ฆฌํ‹ฐ / ๊ด€๋ฆฌ ์ž‘์—… (์˜ˆ : ์ƒํƒœ / ๋ฐ์ดํ„ฐ ๊ฒ€์‚ฌ ๋“ฑ) ๋ฐ ์ผ์ •์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ํ”„๋กœ์„ธ์Šค (์˜ˆ : ๋ฐฑ์—…)๋ฅผ ์บก์Šํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์™ธ๋ถ€์—์„œ๋งŒ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์ด๋ฒคํŠธ (์˜ˆ : S3 ๋ฒ„ํ‚ท ๋ณ€๊ฒฝ์‹œ ํ”„๋กœ์„ธ์Šค ํŠธ๋ฆฌ๊ฑฐ)

์ œ ๊ฒฝ์šฐ์—๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ / ๊ด€๋ฆฌ์ž ์ž‘์—… ์ค‘ ์ผ๋ถ€๊ฐ€ ํŒŒ๊ดด์  ์ผ ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋˜๊ธฐ ๋•Œ๋ฌธ์— 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๋กœ ์ทจํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค

  1. networks ๋ฐ volumes ๋Š” ์‹ค์ œ๋กœ ์ง์ ‘ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ•„์š”์— ๋”ฐ๋ผ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ์ž์ฒด ์„น์…˜์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์€ ํ˜„์žฌ์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  Compose ๊ตฌ์„ฑ์„ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๋งŒ ๋นŒ๋“œํ•˜๋ ค๋ฉด docker-compose build .
  2. ์ด ๋ฌธ์ œ์—์„œ ํ™•์ธ ๋œ ๋ฌธ์ œ๋ฅผ ์‹ค์ œ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฏธ์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์„ฑ ํŒŒ์ผ์—์„œ ์Šค์ผ€์ผ๋ง ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ # 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 ์ด ๊ฑฐ๊ธฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ธฐ๋ณธ ์•„์ด๋””์–ด๊ฐ€

  1. _all_ unqualified ๋ช…๋ น์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋ฌด์‹œํ•ด์•ผํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ œ ์ƒ๊ฐ์—๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ช…๋ น์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ up ๋ฐ start .)
  2. @dsem ์˜ ์ฝ”๋ฉ˜ํŠธ์— ๊ด€ํ•ด์„œ๋Š” '.services'๋ณด๋‹ค '์œ ํ‹ธ๋ฆฌํ‹ฐ'์˜ ์˜๋ฏธ๊ฐ€ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” unixy ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ ์ถ”๋ก ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ๋‹จ์ˆœํžˆ ์ˆจ๊ฒจ์ง„ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์„œ๋น„์Šค ๋„์šฐ๋ฏธ์ž…๋‹ˆ๋‹ค.

@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์™€ ๊ฐ™์€ ๊ฐœ๋ฐœ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„์˜ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ™˜๊ฒฝ๊ณผ ๋ณผ๋ฅจ์„ ์ •์˜ํ•˜๊ธฐ์œ„ํ•œ 2 ๊ฐœ์˜ ์ถ”๊ฐ€ ๋„์ปค ๊ตฌ์„ฑ ํŒŒ์ผ

์ด ์„ค์ •์€ 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 ์„ค์ •๋œ ์„œ๋น„์Šค๋Š” ํ™•์žฅ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์„œ๋น„์Šค ํ…œํ”Œ๋ฆฟ์„ ์ •์˜ํ•œ ๋‹ค์Œ ์—ฌ๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ํ…œํ”Œ๋ฆฟ์€ ๋นŒ๋“œํ•ด์•ผํ•˜์ง€๋งŒ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋งŒ์˜ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค์—ˆ๊ณ  ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•„์ง ๋ฒ ํƒ€ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. :)

https://github.com/jonathanborges/picles-docker

์—ฌ๊ธฐ์— ๋งŽ์€ ํ›Œ๋ฅญํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์€ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

์˜ต์…˜ 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 ๋ญ?
image

@ 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 ์•„๋‹ˆ์˜ค-์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๊ตฌํ˜„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ๊ตฌํ˜„์€ ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฐ˜๋‚˜์ ˆ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์—ผ๋ คํ•˜๋Š” ๊ฒƒ์€ ๊ทผ๋ณธ์ ์ธ ๋””์ž์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค ๋ž€? ์„ค๊ณ„ ์ƒ ์„œ๋น„์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ ๋œ ์žฅ๊ธฐ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Compose๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐ€์ •์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์„ค๊ณ„๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด ์ •์˜์— ๋”ฐ๋ฅด๋ฉด "๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค"๋Š” ์‹ค์ œ๋กœ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค [1]. ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž‘๋™ ํ•˜๋Š” ๋ฏธ๋ฆฌ ์ •์˜ ๋œ ์ž‘์—…์—
  3. ๋”ฐ๋ผ์„œ ์„œ๋น„์Šค๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค (๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค๊ณ„ ์ƒ). ์ด ์‹œ์ ์—์„œ Compose ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์ •์˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๊ฐ„๊ฒฐ์„ฑ์„ ์œ„ํ•ด "์ž‘์—…"์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ •ํ™•ํ•œ ์šฉ์–ด๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
  4. ํƒœ์Šคํฌ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋‹จ๊ธฐ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ ์„œ๋น„์Šค์™€ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅธ ์˜ต์…˜ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž‘์—…์ด ํฌํŠธ๋ฅผ ๋…ธ์ถœ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ง๊ฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2]. ๋ฐ˜๋ฉด์— ์„œ๋น„์Šค์— ๋Œ€๋ถ€๋ถ„ ๋ฌด์˜๋ฏธํ•œ CID ํŒŒ์ผ ๊ณผ ๊ฐ™์€ ์˜ต์…˜์€ ์ž‘์—…์— ์ •๋ง ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ด์ œ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…์—๋Š” ์ข…์†์„ฑ ์ฒด์ธ์ด์žˆ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค (์ด๊ฒƒ์ด ๊ธฐ์กด์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ์„ธ๊ณ„์—์„œ๋Š” Makefile์ด์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค). ๋”ฐ๋ผ์„œ ์ตœ์†Œํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€์žˆ๋Š” ์ข…์†์„ฑ ์ฒด์ธ์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์ด ์žˆ์–ด์•ผํ•˜๋ฉฐ์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ 10 ๋ถ„ ์†Œ์š” ํ•˜๋‚˜ JAR ๋นŒ๋“œ ์ž‘์—…์€ ์ •๋ง ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ผ๋ถ€ ์„œ๋น„์Šค๋Š” ์‹ค์ œ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์‹คํ–‰ ๋œ ์ž‘์—…์— ์˜์กดํ•˜์—ฌ ์ข…์†์„ฑ์„ ๊ณ„์‚ฐํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋˜ ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  7. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ถ€ ์ž‘์—…์€ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜).

์ด ์‹œ์ ์—์„œ ์ด๊ฒƒ์€ ๋ฒ”์œ„ ๋ฐ ๋ณต์žก์„ฑ ์ธก๋ฉด์—์„œ 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 ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋นŒ๋“œ๋˜๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ ๊ฐœ๋ฐœ ๋ชฉ์ ์œผ๋กœ ์„ ํƒ์  ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : ์ถ”๊ฐ€ ๋””๋ฒ„๊น…, phpMyAdmin). ๋‚ด๊ฐ€ํ•ด์•ผ ํ•  ์ผ์€ 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. ๋Œ€์•ˆ์€๋ชจ๋“  .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 ์„œ๋น„์Šค๋„ ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค์˜ entrypoint ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ƒˆ๋กœ์šด 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์— ์ œ๊ณต๋œ ์ธ์ˆ˜๊ฐ€ ํ’€ ์š”์ฒญ๊ณผ ์–ด๋–ค ์‹ ์œผ๋กœ๋“  ๊ด€๋ จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†”์งํžˆ ๋งํ•˜๋ฉด ํ™”๊ฐ€๋‚ฉ๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค ๋ž€? ์„ค๊ณ„ ์ƒ ์„œ๋น„์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ ๋œ ์žฅ๊ธฐ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Compose๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐ€์ •์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์„ค๊ณ„๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด ์ •์˜์— ๋”ฐ๋ฅด๋ฉด "๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค"๋Š” ์‹ค์ œ๋กœ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค [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์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰