compose(๊ณต์์ ์ผ๋ก๋ ๋ฌดํ๊ณผ)์ ์ฌ์ฉ์๋ก์ ๋งค๋ํ์คํธ(yaml ๊ตฌ์ฑ ํ์ผ) ๋ด๋ถ์์ ์ฃผ์ด์ง ์ ์(์ค์ผ์ผ์ด๋ผ๊ณ ๋ ํจ)์ ๋ํด ์์๋ ๋ ธ๋ ์๋ฅผ ์ง์ ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ด ์๋น์ค ์ค์ผ์คํธ๋ ์ด์ .
์: ๊ตฌ๋ฌธ:
worker:
build: rqworker
scale: 5
links:
- redis
command: rqworker -u tcp://redis
@jmmills "docker-compose scale worker=5"์ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ํ ์ ์์ผ๋ฉฐ ํด๋น ์๋น์ค๋ 5๋ก ์์ํฉ๋๊น?
@aanm ์, ํ์ง๋ง ๊ธฐ๋ฅ์ ์๋น์ค ์ ์์์ ๊ธฐ๋ณธ์ผ๋ก ๋ฏธ๋ฌ๋ง๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํญ์ ์คํํด์ผ ํ๋ ์ต์ํ์ ์์ ์ ์งํฉ์ด ์๊ณ ์ด๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ช ํํ๊ฒ ์ ์ธํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
@ @aanm docker-compose up
์ด scale
๋งค๊ฐ๋ณ์๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค๊ณ ์๊ฐํ์ญ๋๊น? ๋ด๊ฐ ๋ณผ ์์๋ ์ ์ผํ ๋ฌธ์ ๋ ๊ธฐ๋ณธ Docker / Docker API ๊ฐ๋
๊ณผ ํธํ ๋์ง ์์ง๋ง Docker Compose์ ๋งค์ฐ ํน์ ํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ์ธ์ ๊ตฌ์ฑ์ ๋์
ํ๋ค๋ ๊ฒ์
๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์ผ๋ก ์ด๊ฒ์ ํ๊ฒ ๋๋ค๋ฉด; ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
#!yaml
worker:
build: rqworker
$scale: 5
links:
- redis
command: rqworker -u tcp://redis
์ฌ๊ธฐ์ $<parameter>
๋ Docker Compose ํน์ ํญ๋ชฉ์ ๋ํ๋
๋๋ค.
์ฐ๋ฆฌ๋ scale
๊ฐ YAML์ ์ํ๋์ง ์ฌ๋ถ์ ๋ํด ์๋ค ๊ฐ๋ค ํ์ต๋๋ค. ์ด์ ์ ์ถ๊ฐํ๋ผ๋ PR์ด ์์์ต๋๋ค(#630). ๋๋ ์ฌ์ ํ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ค์ผ์ผ ์ซ์๋ฅผ ์ค์ ์ ๋ฃ์ผ๋ฉด ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ๊ทธ๋ ๊ฒ ํ๋ฉด ์ด์์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์
๋๋ค. ํ์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํดํฉ๋๋ค.
์ด์ ์ฐ๋ฆฌ๋ extends
Compose ํ์ผ์ ๋ณด๊ฐํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ์ป์์ผ๋ฏ๋ก(๊ณง ๋ ๋์ ํ์ผ - #1380, #758) https://github.com/docker/compose ์์ ์ ๊ธฐํ ์ฐ๋ ค
์ผ๋ฐ์ ์ผ๋ก ์์ํ๊ณ ์ถ์ง ์์ ํ
์คํธ ๊ด๋ จ ์๋น์ค์ ๋ํด yml์ scale=0
๋ฅผ ์ค์ ํ๊ณ ์ถ์ต๋๋ค. docker-compose run
๋๋ ๋ช
์์ scale
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์๋น์ค๋ฅผ ๋ช
์์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
@jamshid ๋๋ ์ข
์ข
ํ๊ฒฝ์ ์ค์ ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์๋ ์ ์๋ฅผ ์ํ์ต๋๋ค. ๋๋ docker run
๋ฅผ ํตํด ๋จ์ ํ
์คํธ๋ฅผ ์คํํ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง(0/no-op ์ฒ๋๋ ๋์์ด ๋จ)๋ฅผ ์์ฑํ๊ณ ๋ด ์ปจํ
์ด๋ ๊ตฌ์ฑ์ด ๊ธฐ๋ณธ ์ด๋ฏธ์ง.
์ด์ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฐ ๊ตฌ์ฑ์ ๊ฝค ์ ์ฉํด ๋ณด์ ๋๋ค.
myproject:
build: .
command: nosetests
scale: 0
links:
- redis
redis:
image: redis
apiserver:
image: myproject
command: plackup
links:
- redis
workerserver:
image: myproject
command: rqworker
links:
- redis
@jamshid @jmmills ์๋น์ค๋น YAML ํ์ผ์ enabled
๋งค๊ฐ๋ณ์/ํค๋ ์ด๋ป์ต๋๊น? ์๋น์ค๋ฅผ ๋นํ์ฑํ/ํ์ฑํํ ์ ์์ต๋๊น?
@prolog "๊ท๋ชจ" ๋งค๊ฐ๋ณ์๊ฐ ๋ ๊ฐ์ง ์๊ตฌ ์ฌํญ์ ๋ชจ๋ ํด๊ฒฐํ ๋ ์ ๊ทธ๋ ๊ฒ ํฉ๋๊น?
์คํ ์ค์ธ ํ๋ก์ธ์ค/์ปจํ
์ด๋๋ฅผ ํด๋์ค์ ์ธ์คํด์ค๋ก ์์ํ๊ณ ์ถ๋ค๋ฉด instances
์ด๋ฆ์ ์ง์ ํ ์๋ ์์ต๋๋ค.
@jmmills ํ์ฌ docker-compose
๊ทธ๋๋ก ์ฌ์ฉํ์ง ์๋ ์ ์ค ์ผ์ด์ค์ ๋ํ _solution_์ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค. ์ ๋ scale=0
๊ฐ ์ ์ ํ์ง ์๋ค๊ณ ์๊ฐํ๋ ๊ฒฝํฅ์ด ์์ผ๋ฉฐ scale=X
๊ฐ Compose ์์ฒด์ ์ผ๋ถ์ฌ์ผ ํ๋์ง์ ๋ํด ๋ ๊ฐ์ง ์๊ฐ์ด ์์ต๋๋ค.
๋ด ์๊ฐ์ ๊ท๋ชจ(๋๋ ์ฌ๋ณธ ์)๋ ์๋น์ค ๊ตฌ์ฑ์ ์ผ๋ถ์ด๋ฏ๋ก ์์ฑ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
scale=0
๋๋ disabled
ํค๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
:+1: ์ธ์คํด์ค์ ๋ํ ๊ธฐ๋ณธ scale
ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ค์ผ์ผ์ด ์
๋ ฅ๋๋ฉด ๋จ์ํ ์ค์ผ์ผ์ 0์ผ๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ disabled
ํค๊ฐ ํ์ํ์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
+1
๋ํ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก: ์ปจํ
์ด๋ ์๋ฅผ ํ์ฅํ๊ณ ์ถ์ง๋ง ๋ชจ๋ ์๋น์ค๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ํ๊ณ ์ถ์ง ์๊ฑฐ๋ ๋ค๋ฅธ ํฐ๋ฏธ๋(๋๋ ํ๋ก์ธ์ค)๋ก ๊ฑด๋๋ฐ๊ณ ๋ด ์ค์ผ์ผ ๋ฒํธ๋ฅผ ์ค์ ํด์ผ ํ๋ ๊ฒฝ์ฐ...
์:
$ docker-compose up && docker scale thing=4
up์ด ์ข
๋ฃ๋์ง ์๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ด ๊ตฌ์ฑ ํ์ผ์ด ๋ด ์ปจํ
์ด๋์ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ฉด ...
$ docker-compose up
DWIM์ด ๋ฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ ๋ง๋ก ์ข์ํ๋์ง ํ์ ํ์ง ๋ชปํ๋ค. ๊ฐ์๊ธฐ up
๋ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
scale
๋งค๊ฐ๋ณ์๊ฐ ์๋ ์ปจํ
์ด๋๋ฅผ ๋ถ๋ฌ์ต๋๋ค.scale=0
๊ฐ ์๋ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.์ฐ๋ฆฌ๋ ์ด์ "up" ๋ช ๋ น์ ์ค์ ๋ก ๋จ์ฉํ๊ณ ์์ต๋๋ค. "Scale"์ ์ด์ ๋ค์ ๋ ๊ฐ์ง ์์ ์ ์ํํ๋ค๋ ์ ์์ ์๋ก์ด ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค.
scale=0
ํตํด ์ปจํ
์ด๋/์๋น์ค ๋นํ์ฑํscale=0
๊ฐ ์๋ ์ปจํ
์ด๋๋ฅผ ๋ถ๋ฌ์ค๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
Build ๋ scale=0
๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ฏ๋ก ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์๊ตฌ ์ฌํญ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
์ ๊ฐ _ํ๋ฆด ์๋ ์์ต๋๋ค_ ํ์ง๋ง ๊ทํ์ ๋ง์ง๋ง ๋๊ธ์ ์ฝ๋ ๊ฒ์ ์ผ์ข ์ ์์์์ต๋๋ค. :)
์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
base_thing:
build: .
scale: 0
thing:
image: base_thing
# scale: 1 implied by default
workers_for_thing:
image: some_other_image
scale: 4
links:
- thing
test_harness:
image: base_thing
command: nosetests --where=my_test_code_dir --all-modules
scale: 0
์ด์ ์์๋๋ ๋์: docker-compose build
๋ "๋น๋"๋ก ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋น๋ํ๊ณ (๋น๋ ์ ์ธ๋ถ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๊น? ๊ธฐ์ต๋์ง ์์ต๋๊น?) docker-compose up
๋ ์์ ์ค์ผ์ผ(๊ธฐ๋ณธ๊ฐ์ 1), docker-compose run test_harness
๋ ํ์ํ ๊ฒฝ์ฐ "base_thing"์ ๋น๋ํ๊ณ ๋ด ํ๋์ ๋ช
๋ น์ ์คํํฉ๋๋ค. ์ค์ ์ ์ง์? :)
ํธ์ง: docker-compose up
๋ 1
"thing" ๋ฐ 4
"workers_for_thing"์ ์คํํฉ๋๋ค.
๊ด์ฐฎ ๊ฐ์ฌ; ๊ทํ์ ์๋ scale=0
์ ์๋์ ๋ํด ์ข ๋ ์ดํดํ๊ณ ์กฐ๊ธ ๋ ๋ช
ํํฉ๋๋ค.
docker-compose
up
/ run
์ด๋ฏธ์ง๋ฅผ "๋์ด์ต๋๋ค"๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ ์คํธ, ์์ฐ, qa ๋ฑ์ ์ํด ์ธ์คํด์ค ์(๊ท๋ชจ)๋ฅผ ๋ํ๋ด๋ ๋ ์ํผ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
scale=X
๋ํด +1 ์ด๊ฒ์ ๋งค์ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
๊ตฌ์ฑ ์ค๋ช
๋ฐ ์์ ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋ @jmmills ์ฃผ์์ ๊ฒฝ์ฐ +1์
๋๋ค.
์ผ! scale=x
. ์ปจํ
์ด๋ ์ธํธ๋ฅผ ์ด๊ธฐํํ๋ฉด ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ์ค์ ํ ๋ ์ ์ฌ์ ์ธ ๊ฒฝ์ ์กฐ๊ฑด์ ์๋ณํ๋ ๋ฐ ํ์คํ ๋์์ด ๋ฉ๋๋ค.
+1 scale=x
(ํฌํจ scale=0
์ด๊ธฐ์ ๋นํ์ฑํ ์๋น์ค์ docker-compose up
)
scale=x
๋ํด +1
x
๋ NaN์
๋๋ค. ๋์ -1
๋ฅผ ์ ์ํ๊ฒ ์ต๋๋ค.
์ค์ผ์ผ = x์ ๊ฒฝ์ฐ +1.
+1
+1
+1๋ก ์ค์งํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
+1'์ ๊ธฐ๋ฅ์ ๋ํ ๊ด์ฌ ์์ค์ ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
@shofetim ๋ ๋์ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค. ๋ฌธ์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค...
+1ing์ ์ ์๋ ์๋ฃจ์ ์ ๋ํ ์ฌ๋๋ค์ ๋์๋ฅผ ํ์ธํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค. github ์ ์ฒด์์ ๊ฝค ์ผ๋ฐ์ ์ธ ๋์์ ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ฆผ์์ ๊ตฌ๋ ์ทจ์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋ฆผ์ด ๊บผ์ง๋๋ค.
๋ญ, ์ด๋ฐ ์ฌ๋๋ค์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์์ฑ ๋ฐฑ๋ก๊ทธ์ ๋น์ทํ ํญ๋ชฉ์ด ์์ต๋๋ค(๊ทธ๋ฆผ์์ ๋จ์). ์ธ์ ๊ฐ๋ ์ด์ ๋ํด ์ธ๊ธํ ์ ์ด ์์ ๊ฒ์
๋๋ค. ์ด๋ฐ ์ ๋
์ ํด๋ด์ผ๊ฒ ์ต๋๋ค.
์ ๋ ์ด๋ฒ ์ฃผ ๋๋ถ๋ถ์ด PuppetCon์ ์์ผ๋ฏ๋ก ํดํน ์๊ฐ์ ๊ฐ์ง ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ๊ธ์ ์ธ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
๋ค์์ "scale=0" ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
app:
build: .
environment:
- DATABASE_URL=postgres://user:password<strong i="6">@host</strong>:5432/dbname
command: sleep 999999999999
app_web:
extends:
service: app
ports:
- "3000:3000"
command:
# intentionally blank to use Dockerfile's default RUN command
app_worker:
extends:
service: app
command:
rake jobs:work
@wkonkel ๋ค, ๊ณผ๊ฑฐ์ ๋น์ทํ ์ผ์ ํ ์ ์ด ์์ต๋๋ค.
์ ๋ ํ์ฌ compose ์ฝ๋๋ฒ ์ด์ค์ ์ต์ํด์ง๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด compose์ ๋ํ ์์น๋ฅผ ์๊ฒ ๋๋ฉด scale ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์์ ๋ํ PR์ ํดํนํ ๊ฒ์
๋๋ค.
๋๋ฌด ์ด๋ ค์ธ ๊ฒ ๊ฐ์ง๋ ์์ต๋๋ค. cli ์ธํฐํ์ด์ค์ ๋ฐฑ์๋์ธ ํ๋ก์ ํธ์ scale
๋ฉ์๋๊ฐ ์์ผ๋ฏ๋ก ์ค์ ๋ก ํด์ผ ํ ์ผ์ "์ค์ผ์ผ"์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ํ๋ ์คํค๋ง, ์ปจํ
์ด๋ ์์ฑ ํ ํธ์ถํ๊ธฐ ์ํด ์กด์ฌํ๋์ง ํ์ธํ๊ณ ... 0์ผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์ปจํ
์ด๋๋ฅผ ์คํํ์ง ์๋์ง ํ์ธํ์ญ์์ค.
์ค์ ๋ก ์ด๊ฒ์ ๋ํ ์์ฃผ ์ค๋๋ PR์ด ์ด๋ ค ์์ต๋๋ค: #630.
๋ฌธ์ ๋ ๊ท๋ชจ๊ฐ ์ด์์์ ๋ฌธ์ ์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ผ๋ถ๊ฐ ์๋๋ฏ๋ก ์์ฑ ํ์ผ๊ณผ ์ค์ ๋ก ๋ง์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ธฐ๋ณธ ์ค์ผ์ผ ์์ค์ ๋ํ ๊ตฌ์ฑ์ ์ง์ํ๋ฉด ์ข๊ฒ ์ง๋ง ์์ฑ ํ์ผ์ด ์ ํฉํ ์์น๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
scale: 0
๋ ์ด๋ฏธ #1754๋ก ํด๊ฒฐ๋์ด์ผ ํฉ๋๋ค. "no-op" ์ปจํ
์ด๋๋ ์ฆ์ ์ข
๋ฃ๋๋ ๋ช
๋ น(echo, true ๋ฑ)์ ๊ฐ์ง ์ ์์ต๋๋ค. scale: 0
๋ฅผ ์ํ๋ ๊ฒฝ์ฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ปจํ
์ด๋ ๋๋ "์์/๊ด๋ฆฌ ์์
"์ ๋ ๊ฐ์ง ์ค ํ๋์
๋๋ค.
๋ณผ๋ฅจ์ ์๋ก์ด API ์๋ํฌ์ธํธ๊ฐ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋จธ์ง ์์ ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ปจํ ์ด๋๊ฐ ํ์ํ์ง ์์ ๊ฒ์ด๋ฉฐ ์ปจํ ์ด๋ ์์ด ๋ณผ๋ฅจ์ ์ ์ํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
๊ด๋ฆฌ ์์
์ #2051๋ก ๋ ์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ํต์ฌ docker-compose.yml
admin.yml
์ ํ์ฅํ๊ณ ๊ฐ๊ฐ์ ์ ์๋ฅผ ํผ๋ํ์ง ์๊ณ ๊ด๋ฆฌ ์์
์ "ํต์ฌ ๊ตฌ์ฑ"์ ์ฐ๊ฒฐํ ์ ์๋๋ก
์ด ๋ ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ํ์ฌ ๋ง์คํฐ ์ํ์ด๋ฉฐ 1.5.0 ๋ฆด๋ฆฌ์ค(๊ณง ๋ชจํ์ด์ ์์)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋น์ค๋ฅผ > 1๋ก ํ์ฅํ๋ ค๋ ๊ฒฝ์ฐ๋ง ๋จ์ต๋๋ค. ์ด๋ฏธ ์ด์ ๊ฐ์ ๊ฒ์ ์คํฌ๋ฆฝํ ํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ง๋ง ๊ตฌ์ฑ ํ์ผ์ ๋ฃ์ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ ํ โโ์ข์ ์ผ์ ๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ #745์์ ๋ณ๋์ ์ค์ ์ ๋ํ ์์ด๋์ด๋ฅผ ํ๊ตฌํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ์๋ก์ด ๊ตฌ์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์(ํ๋ก์ ํธ ์ด๋ฆ, ๊ธฐ๋ณธ ๋คํธ์ํฌ ์ด๋ฆ, ๊ธฐ๋ณธ ๊ท๋ชจ ๋ฑ)์ ์ผ๋ถ๊ฐ ์๋ ๊ฒ๋ค์ ์ํ ์ข์ ์ฅ์๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ์คํ๊ฒ ์ ๋ ๊ท๋ชจ๊ฐ ์ด์์์ ๋ฌธ์ ์ผ ๋ฟ์ด๋ผ๋ ๋ฐ ๋์ํ์ง ์์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ ์ค์ธ ์๋น์ค์ ์ต์ ๊ฐ์์ ์ ๊ฒฝ์ ์ธ ์ ์์ต๋๋ค.
no-op ์ปจํ
์ด๋์ ๊ฒฝ์ฐ ํด๋น ์ปจํ
์ด๋์ ๋ชฉ์ ์ด ๋ค๋ฅธ ์ปจํ
์ด๋๊ฐ image
ํ๋์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋๋ก ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒฝ์ฐ ์ค์ ๋ก ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ๊ฒ ๋๊ปด์ง๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ ์ค์ธ ์๋น์ค์ ์ต์ ๊ฐ์์ ์ ๊ฒฝ์ ์ธ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น?
no-op ์ปจํ ์ด๋์ ๊ดํด์๋ ํด๋น ์ปจํ ์ด๋์ ๋ชฉ์ ์ด ๋ค๋ฅธ ์ปจํ ์ด๋๊ฐ ์ด๋ฏธ์ง ํ๋์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋๋ก ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒฝ์ฐ ์ค์ ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ๊ฒ ๋๊ปด์ง๋๋ค.
๊ธฐ๋ณธ ์ด๋ฏธ์ง๊ฐ ๋์ผํ ๋น๋์ ์ผ๋ถ์ฌ์ผ ํ๋ ์ด์ ๊ฐ ์์ต๋๊น? ๋ด๊ฐ #1455์์ ์ธ๊ธํ๋ฏ์ด compose๋ ๊ธฐ๋ณธ์ ์ผ๋ก "๋์ปค ๋น๋" ๋๊ตฌ๊ฐ ์๋๋๋ค. ๋ชฉํ๋ ๋ฐํ์์ ์ปจํ
์ด๋ ๊ตฌ์ฑ์ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ๊ฐ๋ฅํ ๋ชจ๋ ๋น๋ ์๋๋ฆฌ์ค๋ฅผ ์ง์ํ๋ ค๊ณ ํ๋ฉด ์์ฑ ๋ฒ์๊ฐ ํฌ๊ฒ ๋์ด๋๊ณ ์ปจํ
์ด๋ ์์ฑ์์ ์ด์ ์ด ๋ฉ์ด์ง๋๋ค. ์ด๋ฏธ์ง ๊ตฌ์ถ์ ์ค์ฌ์ผ๋ก ์ค๊ณ๋ ๋๊ตฌ์กฐ์ฐจ๋ ์ด๋ฌํ ์์ฒญ์ ๋ชจ๋ ์ง์ํ๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์
๋๋ค. ๋ ๋์ ๋ฐฉํฅ์ ์์ฑ ๋ณต์ก์ฑ์ ์ต๋ํ ์ ์งํ๊ณ ์ฌ์ฉ์๊ฐ docker-compose build
๋์ ์ ์ ํ ๋น๋ ๋๊ตฌ๋ฅผ ๊ต์ฒดํ ์ ์๋๋ก ํ๋ ๊ฒ์
๋๋ค.
๋ด๊ฐ ๊ด์ฌ ์๋ ์ฌ์ฉ ์ฌ๋ก๋ scale=0์ ๋๋ค(์๋ง๋ abstract=true๊ฐ ๋ ๋์ ์ค๋ช ์๊ฐ ๋ ๊ฒ์ ๋๋ค). ๋ค๋ฅธ ๋ช ๋ น ๊ฐ์ ์ด๋ฏธ์ง์ ํ๊ฒฝ ๋ณ์๋ฅผ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค. ํนํ ๋์ผํ ์ฝ๋์ ๋์ผํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ์น ์๋ฒ๋ฅผ ์คํํ๊ณ ํ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์๋ฒ๋ฅผ ์คํํ๊ณ ์ถ์ต๋๋ค.
@wkonkel ๊ทํ์ ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๊ฒ์ด ํจ๊ณผ๊ฐ ์์๊น์?
app_web:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://user:password<strong i="7">@host</strong>:5432/dbname
app_worker:
extends:
service: app_web
command: rake jobs:work
ports: []
๋น์ ์ ์ด๋ค ์กฐํฉ์ผ๋ก ์กฐ์ ์ถ์์ ์ธ ์๋น์ค๋ฅผ ๊ฐ์ง๊ณ ํ๋ ๋ฌด์ญ command
์ ๋ฌด ์กฐ์ ์ค๋ฒ๋ผ์ด๋์๋ ์ถ์์ ์ ๋ํ ports
. ๊ทธ ์๋ฆฌ๊ฐ ๋ง๋์?
@dnephin ์, ์ ๊ฒฝ์ฐ์๋ ์๋ํฉ๋๋ค.
์ฌ์ค, ๋๋ ๊ทธ๊ฒ์ ๋ค์ ๊ฐ์ ธ์ต๋๋ค ... ๋ฐฉ๊ธ docker-compose-1.4.2๋ก ์๋ํ๋๋ฐ "ports: []"๊ฐ ๋ถ๋ชจ๋ฅผ ๋ฌด์ํ์ง ์์ผ๋ฏ๋ก app_worker๊ฐ "ํฌํธ๊ฐ ์ด๋ฏธ ํ ๋น๋์์ต๋๋ค. ".
@dnephin ์ค๋ ๋์ ๋ ๋์ ์ค๋ช ์ด ์์ง๋ง ์ฌ๊ธฐ์์ ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฐ์ฅ ๋จผ์ ๋ ์ค๋ฅด๋ ๊ฒ์ ๋์ผํ ์ฝ๋๋ฅผ ์คํํ๋ ๋ณ๋์ ์ปจํ ์ด๋๊ฐ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ด ๋์์ฑ์ ์ํด ์ต์ ์์ ์์ ์๋ฅผ ์ํ๋ ์์->ํฌํฌ()->ํ์ ํ ์ ํ์ ์๋น์ค์ฒ๋ผ ๋ชจ๋ธ๋ง๋ ์ ์๋ ์์ ์์คํ ์ ๋๋ค.
์ด์ ๋ํ ์๊ฐ์ ๋ด Python ํจํค์ง(์์ ์ ์ฝ๋)๊ฐ ํฌํจ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ์ง๋ง ๊ฐ ๋๊ธฐ์ด์ ๋ํด ์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ์คํ๋๋ ๋ค๋ฅธ ๋๊ธฐ์ด์ ์ฐ๊ฒฐ๋ RQ ์์ ์๋ฅผ ์ฌ์ฉํ๋ ์ฑ์์ ๋์์ต๋๋ค. ์ฅ๊ธฐ ์คํ ์์ ๋๋ฌธ์ ์ต์ ๋์์ฑ ๊ฐ์ฉ์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ด์์ต๋๋ค.
๋๋ ๊ทธ๋ฅ no-op ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋๋จธ์ง ์ ํ๋ฆฌ์ผ์ด์ ์คํ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋น๋๋ ๊ณต์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ป๊ธฐ ์ํ ๋ฆฌ์์ค ๋ญ๋น์ฒ๋ผ ๋ณด์ธ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๋ํด์๋ง while/sleep ๋ฃจํ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๋ฉ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ง๋ง ์ด๋ฅผ ์ํํ๋ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋งํ ๊ฒ๋ ์์ด ํ๋ก์ธ์ค ํธ๋ฆฌ์ ๋ฐํ์ ๊ธฐ๋ฅ์ด ์๋ ํญ๋ชฉ์ด ๋จ์ต๋๋ค.
docker-compose๊ฐ ์ด๋ฏธ์ง ๋น๋ ๊ด๊ณ๋ฅผ ์ฝ๋ฉํ๋ ๋๋ฉ์ธ์ผ๋ก ์ค์ ๋ก ๊ต์ฐจํ์ง ์๋ ๊ฒฝ์ฐ ๋น๋ ์ต์ ์ด ์์ด์ ธ์ผ ํ๊ณ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํด ๋น๋ ๋์์ ์ ์ํ ์ ์๋๋ก ๋ค๋ฅธ ๋น๋ ์ ์ ์์คํ ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. , ๋ช ๊ฐ์ง ์์ ๋ ์ํฐํฉํธ/๊ตฌ์ฑ๊ณผ ํจ๊ป ํด๋น ๊ธฐ๋ฐ์ ์ฌ๋ฐ๋ฅธ ์์๋ก ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ ๋ฌด์์ ๋๊น?
์๋๋ฉด ์ ๊ฐ ๋๋ฌด ๋ ๋จ์ ์ด์ด์ ์ ธ ์คํฌ๋ฆฝํธ์์ docker compose ๋ช ๋ น์ ๋ํํ์ฌ ๊ท๋ชจ๋ก ์๋น์ค๋ฅผ ์์ํ๊ณ ๋ชจ๋ ์ด๋ฏธ์ง ๋น๋๋ฅผ ์ข ์์ฑ์ด ์๋ make ๋์์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค.
๋๋ ๊ทธ๋ฅ no-op ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋๋จธ์ง ์ ํ๋ฆฌ์ผ์ด์ ์คํ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋น๋๋ ๊ณต์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ป๊ธฐ ์ํ ๋ฆฌ์์ค ๋ญ๋น์ฒ๋ผ ๋ณด์ธ๋ค๊ณ ์๊ฐํฉ๋๋ค.
#1754(๋ค์ ๋ฆด๋ฆฌ์ค์์)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค. ์๋น์ค๊ฐ ์ข ๋ฃ๋ ์ ์์ผ๋ฉฐ ๋๋จธ์ง ์๋น์ค๋ ์ค์ง๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฒ ์ด์ค๋ฅผ ์ข ๋ฃํ๊ณ ๊ฑฑ์ ํ์ง ์์๋ ๋ฉ๋๋ค.
@dnephin Cool, ๊ทธ๋ฌ๋ฉด ๊ธฐ๋ณธ/์ค๊ฐ ์ปจํ
์ด๋์ link
๋ฅผ ์ ๊ณตํ์ฌ ๋จผ์ ๋น๋๋๋๋ก ํ์๊ฒ ์ต๋๊น?
@dnephin : docker compose up
ํด๋นํ๋ CI ๋ฌ๋๊ฐ ์์ต๋๋ค. ๋ด ํ
์คํธ ํ๊ฒฝ์ด ์ฌ๋ฌ ๋ฒ์ ์ ์๋น์ค(์: ๊ท๋ชจ)๋ก ์คํ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ ์ฒด ๊ตฌ์ฑ ๋ธ๋ก์ ๋ณต์ฌํ ์๋ ์์ง๋ง ์ด๋ฅผ ๋ฐ๋ณตํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ "๋จ์ํ ์ด์์์ ๋ฌธ์ "๊ฐ ์๋๋ผ ํ์ฌ ์์ฑ ํ์ผ์ ์์ ํ ์ค๋ช
๋์ด ์๋ ํด๋ฌ์คํฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋์ ๊ฐ๋ฐ ํ๊ฒฝ์ ํ์ํ ๊ฒ์
๋๋ค. ํ์ฌ๋ก์๋ ๋์ญ ์ธ ๊ท๋ชจ ๊ตฌ์ฑ์ด ์์ด์ผ ํ๊ณ ์ด๋ป๊ฒ๋ docker-compose scale
ํธ์ถํด์ผ ํ ๊ฒ์
๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ์ด์์ ์ด์ง ์๊ณ ์คํจ์ ๊ฒฝ์ฃผ์ ๋ํ ์ถ๊ฐ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ๋ก๋์ ์ฌ๋ก์์๋ ์ต์ํ์ ๊ท๋ชจ๋ก ์๋น์ค์ ๋ณํ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ ํด๋ฌ์คํฐ์์ ๋ค๋ฅธ ํด๋ฌ์คํฐ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์์ผ๋ฉฐ ์์ ์ ๋จ์์ฑ์ ์ํด ๋ง์ด๊ทธ๋ ์ด์ ์ ์ผ๋ถ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ณต์ฌ ๋ฐ์ดํฐ๋ก ์ ์งํ๋๋ก ํฉ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์๋ถํฐ ์ผ๋ถ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์์ํด์ผ ํ๋ฏ๋ก ์น์ ๋งํ ์ ์๋ ์ผ๋ถ ์๋น์ค์ ์ ์ด๋ (n) ์ธ์คํด์ค๋ฅผ docker-compose up์ผ๋ก ๋ฐฐํฌํด์ผ ํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ์ ์๋น์ค์์ ๊ท๋ชจ๋ฅผ ์กฐ์ ํ๋ฉด ์ค์ ๋ก ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ค์ ๋ก ์์ ์ง์ ์ ํ๋๊ฐ ์๋๋ผ ์คํ ์ค์ธ ์ผ๋ถ ์๋น์ค ์ธ์คํด์ค๊ฐ ์ ์ด๋ (n)๊ฐ ์์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ ๋ ธ์ถํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ฑ ์ฌ์ฉ ์ฌ๋ก์ด๊ธฐ๋ ํฉ๋๋ค.
๋ด ๊ด์ ์์ ์ค์ผ์ผ์ ์ค์ ๋ก ํ ํด๋ก์ง ๋ฐ ๊ตฌ์ฑ์ ์ ์ ๋งค๊ฐ๋ณ์์ ๋๋ค.
@dnephin
์ด ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น?
Consul, MariaDB Master-Master ๋๋ Swarm์ ๊ธฐํ ๋ถ์ฐ ์ฑ์ ํด๋ฌ์คํฐ์ ์ต์ 3๊ฐ์ ๋ ธ๋๊ฐ ์์ด์ผ ์์ ์ ์ ๋๋ค. ๊ตฌ์ฑ ํ์ผ์์ ์ฌ์ฉํ ์ ์๋ ์๋น์ค ์์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ถ๋ช ํ ์์ต๋๋ค. ์ ๊ทธ๋ ๊ฒ ๋ฐ๋ํ๋์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ํฐ :+1: ์ฌ๊ธฐ์์ ๋์๊ฒ์.
๋๋ scale์ ์ค์ ํ๋ ๋ฐฉ์์ ๋ฐ๋ํ๋ ๊ฒ์ด ์๋๋ผ, compose ํ์ผ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณํ๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ด compose ํ์ผ์ ์ํ๋ค๊ณ ์๊ฐํ์ง ์๋๋ค.
๊ตฌ์ฑ ํ์ผ์ ์ผ๋ถ ๊ท๋ชจ ๊ตฌ์ฑ์ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํ๋ ์ด ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
docker-compose up -d
ํ๋ฉด ์๋น์ค๊ฐ 3์ผ๋ก ํ์ฅ๋ฉ๋๋ค.docker-compose scale service=4
docker-compose up -d
์ฝ๊ฐ์ ๋ณ๊ฒฝ์ ๊ฐํ๊ณ ์ฌ๋ฐฐํฌํฉ๋๋ค. ์ด๋ป๊ฒ ๋ฉ๋๊น? ๋ค์ 3์ผ๋ก ์ถ์๋๋์? ์ด์ ๊ท๋ชจ๋ฅผ ์์ ํ ๋ฌด์ํฉ๋๊น?์ด๋ฌํ ์๋๋ฆฌ์ค ์ค ์ด๋ ๊ฒ๋ ์ข์ง ์๊ฑฐ๋ ์ ์ ํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฉฐ ์ด๋ ์ธ์คํด์ค ์คํจ๋ฅผ ๋ฌด์ํ๋ ์ฌ์ํ ์์ผ ๋ฟ์ ๋๋ค(์ด๋ก ์ธํด ๋ ๋ณต์กํด์ง).
๊ทธ๊ฒ์ด ์์ฑ ํ์ผ์ ์ถ๊ฐ๋๋ค๋ฉด ์ถฉ๋ํ์ง ์๋๋ก scale
๋ช
๋ น์ ์ ๊ฑฐํ๊ณ ์ถ์ต๋๋ค.
๊ทํ๊ฐ ์ ๊ณตํ๋ ์๋ ์ด์ ์๊ตฌ ์ฌํญ์ ์์
๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ง์คํฐ๊ฐ ํ์ํ์ง ์์ผ๋ฉฐ ์๋น์ค์ ์์ ์ฑ(์ด์)์ ์ํด ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ scale db=x
๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ํ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค.
@dnephin์ด ์์ ์ ๊ณตํ ์๋ฅผ ์ฌ์ฉํ์ฌ:
๋จผ์ scale ๋ช ๋ น๋ ์์งํ ๋ช ๋ น์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋น์ค๋ฅผ ํ์ฅ ๋๋ ์ถ์ํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ง๋ ๋ง์ ์๋น์ค๊ฐ ์ํํ๋์ง ๋งํจ์ผ๋ก์จ ํ์ฅ ๋๋ ์ถ์์ ์๋๋ฅผ ์ค๋ช ํ๋ ๋ ๊ฐ์ diff ๋ช ๋ น์ด ์์ต๋๋ค. ๊ฐ๊ฐ ์์ฑํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ฒ์ด ํจ์ฌ ์ข์ต๋๋ค.
@dnephin ์ด ์ ๊ธฐํ ์ง๋ฌธ์ ๋ํ ๋๋ต์ ์์ ์ ๋งํผ ๋ง์ ์๋น์ค/์ปจํ ์ด๋๊ฐ ์คํ๋ ๊ฒ์ผ๋ก ์์ํ๋ค๋ ๊ฒ์ ๋๋ค.
Compose๋ ์๋น์ค/์ปจํ ์ด๋๋ฅผ ๋ชจ๋ฅด๊ฑฐ๋ ๋ชจ๋ํฐ๋งํ์ง ๋ชปํ๋ ์ํ ๋น์ ์ฅ ๋๊ตฌ์ ๋๋ค. docker api๋ฅผ ์ฌ์ฉํ์ฌ Ops๊ฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํ๋ ๊ณณ์์ ์ค์ผ์คํธ๋ ์ด์ ํ๋๋ก ๋์์ค๋๋ค. ์์ฑ์ ์ ์ฒด ์ค์ผ์คํธ๋ ์ด์ ์๋น์ค๊ฐ ์๋ ๋์๋ง ๋๊ตฌ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ๊ทธ ์์ง์ด ํ์ํฉ๋๋ค. ์ ๋๋ก ์คํ๋๋ ์์ง์ด ์๊ณ ํ๋ก๋น์ ๋ํ ์์คํ ์ด ์์ผ๋ฉฐ ๋ชจ๋ ํด๋ฌ์คํฐ๋ฅผ ํด๋ฌ์คํฐ์ ๊ฒฐํฉํ ๋ฌด๋ฆฌ๊ฐ ์์ง๋ง ๊ตฌ์ฑํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ์ค์ ์ค์ผ์คํธ๋ ์ด์ ์๋น์ค/๋๊ตฌ๊ฐ ๋์ถ๋์์ต๋๋ค. ๋ฐฐํฌ๋ ์๋น์ค/์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด k8๊ณผ ๊ฐ์ ์์ ์ ์ํํฉ๋๋ค. ์ง๊ธ์ compose๊ฐ ๊ทธ๊ฒ๊ณผ ๋ง์ด ๋น์ทํ์ง๋ง ์ด ํ๋ก์ ํธ์ ๋ฏธ๋๊ฐ ์๋๋ผ๋ฉด ๋ ํฐ ๊ฒ์ผ๋ก ์งํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ณต์ ๊ฐ๋ฐ์์ ์ ์ง ๊ด๋ฆฌ์๊ฐ ์ด์ ๋ํด ์ด์ผ๊ธฐํ์ฌ ๋ค๋ฅธ ๊ฒ์ ์์๋ผ ์ ์์ ๊ฒ์ ๋๋ค. ํ ์ ์๋ ๋๊ตฌ์ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก Compose๋ ํ๋ฅญํ ๋๊ตฌ์ด๊ณ ์ฐ๋ฆฌ ๋ชจ๋์๊ฒ ์ ์๋ ค์ ธ ์๊ธฐ ๋๋ฌธ์ ์งํํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
docker-compose > docker compose
๋ฅผ) ๋ณด๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
๋๋จธ์ง ๋๊ตฌ๋ ํ์คํ์ง ์์ง๋ง ์ด๋ฅผ ์ํด ์์ง๊ณผ ์ํ ์ ์ฅ ํตํฉ์ด ์์ผ๋ฉด ์ ๋ง ์ข์ ๊ฒ์
๋๋ค. ์กฐ๊ธ ์ฃผ์ ๋ฅผ ๋ฒ์ด๋ ๋๊ธ ์ฃ์กํฉ๋๋ค.
scale ๋ช ๋ น์ ์ ๊ฑฐํ๊ณ scale ์ต์ ์ผ๋ก ๊ต์ฒดํ์๋ ์ ์์ ์ํด #2496์ ๋ง๋ค์์ต๋๋ค(์์ ๊ฒ์๋ฌผ์์). ์ด ์ ์์ ๋ํ ํผ๋๋ฐฑ์ ํ๋ฅญํ ๊ฒ์ ๋๋ค.
#2496 compose๊ฐ ์๋ @dnephin ์ ์ฝ๊ฒ ํ์ฅ ๋๋ ์ถ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ compose ํ์ผ์ ์ฌ๊ตฌ์ฑํ ๋ค์ ์ฐ๋ฆฌ๊ฐ ํ์ํ ๊ฒ์ด ํ๋์ ์ธ์คํด์ค๋ฅผ ์ถ์ ๋๋ ํ์ฅํ ๋ ๋ค์ compose up์ ์คํํด์ผ ํฉ๋๋ค. ์ ๋ ์ด๊ฒ์ด ๊ฝค ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ณต์กํ.
๋ค์ ํ ๋ฒ ์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ ์๋๋ฆฌ์ค๊ฐ compose๊ฐ ์ํ ๋น์ ์ฅ ๋๊ตฌ๋ผ๋ ์ ๊ณผ ์๋น์ค์ ์ํ์ ์ด๋ค ์ง์ ์์ ์๋น์ค์ ์๋ฅผ ์ ์ดํ ์ ์๋ค๋ ์ ์์ ๋น๋กฏ๋์๋ค๋ ์ ์ ๋์น๊ณ ์์ต๋๋ค.
์ ์ ์์์์ ์ธ๊ธํ ์๋๋ฆฌ์ค๋ ์ํ ์ ์ฒด ์๋น์ค/๋๊ตฌ new-compose๋ก ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
+1
+1
+1
@dnephin ๋ค์์ ์ํํ๋ฉด ๋์์ด ๋์ผํ์ง ์์ต๋๋ค.
$ docker-compose up -d && docker-compose scale node=4 && docker-compose up -d
์์ฑ์ด ๋ด๋ถ์ ์ผ๋ก ํ์ฅ์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ๊ฐ ๋ ํฌ์ง ์์ต๋๊น?
์ฆ, "์์ฉ ํ๋ก๊ทธ๋จ ์์ฑ"์ด ์ํ ๋น์ ์ฅ์ ๋๋ค. ์ ์ผํ ์ํ๋ 1) ์์ฑ ํ์ผ ๋ฐ 2) ์์ง์์ ๊ด๋ฆฌํ๋ ๋์ปค ์ปจํ ์ด๋ ๋ ์ด๋ธ์ ๋๋ค.
์์ฑ ํ์ผ์ ์์ฑ์ด ์๋ ์ฌ๋์ ์ํด์๋ง ํธ์ง๋ฉ๋๋ค. ๋์ผํ ์ฃผ์, ์์ ๋ฐ ๊ตฌ์กฐ๋ก yaml์ ์์ฑํ๋ ค๊ณ ํ๋ฉด ์๋ง์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ pyyaml์์ ์ง์ํ์ง ์์ผ๋ฉฐ ์ด์จ๋ ์ฐ๋ฆฌ๊ฐ ์ ๋ง๋ก ํ๊ณ ์ถ์ ๊ฒ์ด ์๋๋๋ค.
๋์ปค ์์ง์ ๊ท๋ชจ๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ฏ๋ก ํด๋น ์ํ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ํจ์ฌ ๋ ํฐ ์ํคํ ์ฒ ๋ณ๊ฒฝ์ผ๋ก ๊ฐ๋ฅํ์ง๋ง ์ด๋ ์ด ๋ฌธ์ ์ ๋ฒ์๋ฅผ ๋ค์ ๋ฒ์ด๋ฉ๋๋ค.
ํ์ฌ ์ฐ๋ฆฌ์ ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ น์ค ์ต์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์ ์งํ๊ฑฐ๋ ์์ฑ ํ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง #2496์์ ์ค๋ช ํ๋ฏ์ด ๋ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํผ๋์ค๋ฝ๊ณ ์๋ชป๋ ๋์์ผ๋ก ์ด์ด์ง๋ค๊ณ ์๊ฐํฉ๋๋ค.
up && scale && up
์ค์ ๋ก ์ง๊ธ ์ณ์ ์ผ์ ํ๊ณ ์์ต๋๋ค. up
๋ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ฑํ๊ณ ๊ตฌ์ฑ์ scale ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ์ํ๋ scale์ด ๋ฌด์์ธ์ง ํผ๋ํ์ง ์์ต๋๋ค. scale ๋ช
๋ น์ ์ํด ์ด๋ฏธ ์ค์ ๋์๊ณ ์ปจํ
์ด๋ ๋ ์ด๋ธ๋ก ์ถ์ ๋์์ต๋๋ค.
@dnephin ๋๋ ๋น์ ์ด ๋งํ๋ ๊ฒ์ ๋์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. [๋๋ ์ด ๊ฐ์ ์ด ํ๋ฆด ์๋ ์์ต๋๋ค] ๋น์ ์ด ์ ๋ง๋ก ์ง๋ฌธํ๊ณ ์๋ ๊ฒ์ _if_ ๊ตฌ์ฑ ์์์ ์ธ์คํด์ค ์๊ฐ ์ค์ ๋ก ์๋น์ค ๊ตฌ์ฑ(์ปจํ ์ด๋์ ๊ทธ๋ฃน ๋ค๋ฅธ ๊ตฌ์ฑ ์์ ์ปจํ ์ด๋ ์คํ). ํ์ฌ cli์ ๊ตฌ์ฑ ์ ์(yaml) ์ฌ์ด์ ํจ๋ฆฌํฐ๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒฝ๊ณ ์ ํจ๊ป ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๊ท๋ชจ๊ฐ ๊ตฌ์ฑ์ ๋ฌธ์ ๊ฐ ์๋๋ผ๊ณ ์ฑ ์ ๋ฒ์๊ฐ ๊ฒฐ์ ๋๋ฉด cli ์ต์ ์ผ๋ก ๊ท๋ชจ๋ฅผ ์ ๊ฑฐํด์ผ ํ๊ฑฐ๋(์๋ง๋ ๋ง์ ์ฌ์ฉ์๋ฅผ ํ๋๊ฒ ํจ), ๊ท๋ชจ๊ฐ ์๋น์ค ๊ตฌ์ฑ์ ๋ฌธ์ ๋ผ๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ N+1์ด ํ์ํ ํด๋ฌ์คํฐ๋ง๋ ์ธ์คํด์ค๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์ต์ ์ธ์คํด์ค์ ์ถ๊ฐ ์ง์๊ณผ ํจ๊ป cli์ yaml ์ฌ์ด์ ํจ๋ฆฌํฐ๊ฐ ์์ด์ผ ํฉ๋๋ค.
@jmmills์ ๋์ ํนํ ๋ฐ์ดํฐ ์ปจํ
์ด๋ ํด๋ฌ์คํฐ๋ฅผ ์คํํ ๋ ๊ฐ์ฉ์ฑ๊ณผ ๋ณต์ ๊ฐ ํจ๊ป ์งํ๋๋ ๊ฒฝ์ฐ ์ต์ scale
๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ผ๋ถ์
๋๋ค. ์ ์ ํ ํ์ฅ์ด ์์ผ๋ฉด ์๋ํ์ง ์์ ์๋ ์์ต๋๋ค.
+1
+1
+1
ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธํด์ผ ํฉ๋๋ค.
์
๋ ๋ ํฌ๋กฌ1:
...
์
๋ ๋ ํฌ๋กฌ2:
...
๊ทธ๊ฒ์ ์ข์ ๊ฒ์
๋๋ค:
์
๋ ๋ ํฌ๋กฌ:
๊ท๋ชจ: 2
+1
@caioquirino๊ฐ ๋งํ ๊ฒ๊ณผ ์ ํํ
docker-compose up
๋ ๋ค๋ฅธ ์์
์์ด ์์
ํ๊ฒฝ์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ์ฌ๋ฌ ๋
ธ๋๊ฐ ํ์ํ ์๋น์ค๋ฅผ ๋ถ๋ฌ์ค๋ ์ ์ผํ ๋ฐฉ๋ฒ์ @caioquirino๊ฐ ์ธ๊ธํ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์์ DRY ์๋ฐ์ ๋ฌด์ํ๋ฉด ์ด๋ค '์๋น์ค'๋ฅผ ํ์ฅํด์ผ ํ๋์ง ๋ช
ํํ์ง ์๊ธฐ ๋๋ฌธ์ scale ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋
ธ๋๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด ํจํด์ด ์๋ชป๋ ๋์๊ฐ ๋ฉ๋๋ค.
yml ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
ํฐ +1, ์ฒ์์ ์ค์ผ์ผ์ด 0์ผ๋ก ์ค์ ๋ ์๋น์ค๋ฅผ ์ ์ํ๋ ๋ฐ ์ด๊ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
์ ๋ผ์ธ์ ๋ฐ๋ผ ...
consul_bootstrap:
build: ./consul
consul_master:
build: ./consul_master
scale: 0
์์ด๋์ด๋ ๋์ผํ docker-compose.yml์ ์ฌ์ฉํ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ๋ก๋์
์ผ๋ก ์ํํ๊ฒ ์ ํํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. consul_master ์ธ์คํด์ค๋ ์๋์ผ๋ก ๋๋ชฉ์ ํฉ๋ฅํ๊ณ docker-compose scale consul_master=3
๋ฅผ ์ํํ์ฌ ์ ์กฑ์๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ ๊ฝค ๋ฉ์ง ๊ฒ์
๋๋ค.
@dnephin์ ์๋ตํ๋ ค๋ฉด...
๊ตฌ์ฑ ํ์ผ์ ์ผ๋ถ ๊ท๋ชจ ๊ตฌ์ฑ์ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํ๋ ์ด ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ์๋น์ค์ ๋ํ ์ด๊ธฐ ์ฒ๋๋ฅผ 3์ผ๋ก ์ค์ ํ์ต๋๋ค.
- docker-compose up -d๋ฅผ ์คํํ๋ฉด ์๋น์ค๊ฐ 3์ผ๋ก ํ์ฅ๋ฉ๋๋ค.
- docker-compose scale service=4๋ฅผ ์คํํฉ๋๋ค.
- docker-compose up -d๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ถ ๋ณ๊ฒฝํ๊ณ ์ฌ๋ฐฐํฌํฉ๋๋ค. ์ด๋ป๊ฒ ๋ฉ๋๊น? ๋ค์ 3์ผ๋ก ์ถ์๋๋์? ์ด์ ๊ท๋ชจ๋ฅผ ์์ ํ ๋ฌด์ํฉ๋๊น?
- ์ฌ๋ํด
- ๊ด์ฐฎ์
- ๋๋ ์ฌ์ ํ ๋น์ ๊ณผ ํจ๊ป
- ์ง์์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ ๊ธฐ์กด ๋ฐฐํฌ์ ๋ํด ๊ท๋ชจ์ ์ฐ์์ฑ์ ์ ์งํ ์ ์๋๋ก ๊ธฐ์กด ๋ฐฐํฌ์ ์ ๋ฐฐํฌ ๊ฐ์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ณ ๋ฐฐํฌ์๋ DOCKER_HOST ํ๊ฒฝ ๋ฑ์ด ๊ฐ ๊ตฌ์ฑ ์์์ ๊ท๋ชจ, ์ด๋ฏธ์ง ID ๋ฐ ์ฌ๋ฐฐํฌ ๊ธฐ๋ก๊ณผ ํจ๊ป ํฌํจ๋ฉ๋๋ค. ์ง์์ ์ธ ๋ฐฐํฌ ๋๋ ๋ธ๋ฃจ ๊ทธ๋ฆฐ ๋ฐฐํฌ์ ๊ฐ์ ์ ์คํ ๋ฉ์ปค๋์ฆ์ ์ฐ๊ฒฐํ๊ธฐ์ ์ข์ ์ฅ์๊ฐ ๋ ์ ์์ต๋๊น? ์ ๋ ์ฝ๊ฐ ๋ ์์ฐ ์ค๋น๊ฐ ๋ ์ํฌํ๋ก๋ฅผ ์์ํ๊ณ ์์ผ๋ฏ๋ก ๋ค๋ฅธ DOCKER_HOST์ ์ฐ๊ฒฐํ๊ณ
docker-compose up -d
๋ฅผ ์ํํ ๋ค์ ํํฌ๋ฅผ ์ ๊ณตํ์ฌ ์ ์คํ ๋๊ตฌ๊ฐ CI ๋ฐ ๋ธ๋ฃจ/๊ทธ๋ฆฐ ๋กค์์๊ณผ ๊ฐ์ ๊ฒ์ ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค. DOCKER_COMPOSE_ENV={"testing " || "์์ฐ" || "๊ฐ๋ฐ์"}?
"ํ๋์ฝ๋ฉ๋" scale
IMHO, 3์๊ฒ ๋งํ๋ฉด 3๊ฐ์ ์ปจํ
์ด๋๋ก ์์ํด์ผ ํฉ๋๋ค.
"scale" ๋งค๊ฐ๋ณ์์ "scale" ๋ช ๋ น์ ๋ํ ๋ง์ ํผ๋์ YAML ๋งค๊ฐ๋ณ์๋ฅผ "initial_scale" ๋๋ "default_scale"๋ก ๋ช ๋ช ํจ์ผ๋ก์จ ์ํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์ด๋ค ์ข ๋ฅ์ ์ฌ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ ๊ฐ์ผ ๋ฟ์ด๋ผ๋ ๊ฒ์ ๋ถ๋ช ํ ํฉ๋๋ค. ๋ํ (์ ์ด๋ IMHO) ์ด "initial_scale" ๋งค๊ฐ๋ณ์๋ docker-compose๊ฐ ์๋น์ค๋ฅผ ์ฒ์์ผ๋ก ๋ถ๋ฌ์ฌ ๋๋ง ์ฐธ์กฐ๋๊ณ ์๋น์ค์ ์ผ๋ถ ์ธ์คํด์ค๊ฐ ์ด๋ฏธ ์คํ ์ค์ธ ์ํ์์ docker-compose๋ฅผ ๋ค์ ์คํํ ๋๋ ์ฐธ์กฐํ์ง ์๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
"initial_scale"์ ๋ํด +1, docker ์์ฒด์๋ ์ด๋ฌํ ๋งค๊ฐ๋ณ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์์ฑ ๊ด๋ จ ๋งค๊ฐ๋ณ์๋ก ๋ช ์์ ์ผ๋ก ์ค๋ช ํฉ๋๋ค.
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ https://blog.docker.com/2016/02/video-containers-as-a-service-caas/ ์์ "48.56" ๋น๋์ค์์ ํฅ๋ฏธ๋ก์ด ์ผ์ด ๋ฐ์ํฉ๋๋ค. ์คํ ์์ฑ ์ง์ ์์ ์ค์ ๋ก ์คํํ ์ปจํ ์ด๋ ์ธ์คํด์ค ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.๋ฐ๋ผ์ ์ด ์์ด๋์ด๋ ๋์ปค ํ์ ์๋ก์ด ๊ฒ์ด ์๋๋ฏ๋ก ๋ค์ ์์ฑ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
+1
+1
์๋ฐฑ๋ง ๊ฐ์ ๋ฌธ์ ๋ฐ ์์ฒญ scale/initial_count ๋ฑ .. ์์ง ๊ณํ๋์ง ์์์ต๋๋ค.
๋ค๋ฅธ ์ข์ ํ๋ก์ ํธ๋ฅผ ๋ณด๋ ๊ฒ์ ์ฌํ์ง๋ง ์ฌ๋๋ค์ ํ๊ณ๋ฅผ ์ฐพ๊ณ ์๋กญ๊ณ ์ค๋ณต๋ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์ ๋ฅผ ๋ซ๊ณ ์์ ์ "์ํ"ํ ๋ฟ์ ๋๋ค.
+1
+1
+1
+1
์ค์งํ์ญ์์ค!
+1์ ์ถ๊ฐํ์ง ๋ง์ญ์์ค!
๋ฌธ์ ๋ฅผ ๊ตฌ๋
ํ์ญ์์ค!
+1 ( @ํผ์๋ฅด ์ฃ์กํฉ๋๋ค)
+1 ๋งค์ฐ ์ค์ํฉ๋๋ค( @pierrre , ์ฃ์กํฉ๋๋ค)
๋์ํ์ง๋ง "+1"์ ๋ํ 100000๊ฐ์ ์๋ฆผ์ ๋ฐ๊ณ ์ถ์ง ์์ต๋๋ค!
/me fork docker compose ๋ฐ ์ฝ๋๋ฒ ์ด์ค ํ์ต์ ์์ํฉ๋๋ค.
์์ ๋ง์ ์ ํจํ ์ ์ ๋ณด๋ฉด ๊ตฌ์ฑ ํ์ผ์ default/inital scale
๋งค๊ฐ๋ณ์๊ฐ ์๊ณ scale
cli ๋ช
๋ น์ด ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ์ด๊ธฐ ํ์ฅ ์ต์
์ ์ง์ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ฟผ๋ผ์ด X๊ฐ์ ๋
ธ๋๋ก ๊ตฌ์ฑ๋๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ํ์ง ์์์ผ ํ๋ ํด๋ฌ์คํฐ๋ ์๋น์ค๋ฅผ ๊ณ ๋ คํ์ญ์์ค(์: 3 ์ด์). docker-compose
์ ์์ ์ ๊ทธ๋ฌํ ์์คํ
์ ๋ํด ์์ ํ ํฌํจ๋ ์ค๋ช
์๋ฅผ ๊ฐ๋ ๊ฒ์
๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค๋ณต์ ์ค์ด๊ธฐ ์ํด ๋ช ๊ฐ์ง ๊ณตํต ์ค์ ์ผ๋ก ์๋น์ค๋ฅผ ํ์ฅํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ๋ณธ ์๋น์ค๊ฐ ์์ฑ๋๊ณ (๋ช ์์ ์ผ๋ก ์๋น์ค ์ด๋ฆ์ ์ง์ ํ์ง ์๊ณ ์คํํ ๋) ์๋์ผ๋ก ์ข ๋ฃํฉ๋๋ค. ๊ธฐ๋ณธ ์๋น์ค์ ์ด๊ธฐ ์ฒ๋๊ฐ 0์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋์ํฉ๋๋ค. ๋ด ์๊ฐ์ ์ด ๋ฌธ์ ์ ์ฐ๊ฒฐ๋/๊ด๋ จ ๋ฌธ์ ๋ ์ฝ๊ฐ ๋ค๋ฅธ ๋ฌธ์ ๋ก ์์ฝ๋ฉ๋๋ค. up
๋ฐ scale
๊ถ๊ทน์ ์ผ๋ก ๋์ผํ ๋ช
๋ น์ด ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๊ทธ๋ค์ ๋๋๋ก ์ด๋ฏธ:
docker-compose up service
docker-compose scale service=1
.๊ทธ๋ฆฌ๊ณ scale
๊ฐ up
๊ฐ ํ๋ ๋ชจ๋ cli ์ต์
(์: --force-recreate
)์ ๋
ธ์ถํ๊ฑฐ๋ up
๊ฐ ์นด์ดํ
์ ๋ํด ์๊ณ ์๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ๋ ๊ฒ์
๋๋ค.
์ด ๋ฌธ์ ์์ ์ ์ํ๋ ๊ฒ์ฒ๋ผ "์ด๊ธฐ ์ฒ๋" ์ง์๋ฌธ์ด docker-compose.yml
๋๋ฉด up
๋ ๊ณ์ฐํ๋ ๋ฒ์ ๋ฐฐ์์ผ ํฉ๋๋ค. ์ด๋ ์์ ์์ up
๋ ๊ณ์ฐ ๊ตฌ๋ฌธ docker-compose up service=10
(yaml์ ์ ์๋ ์ค์ผ์ผ์ ๋ฎ์ด์ธ ์ ์์)์ ์ง์ํ์ง ์์์ผ ํฉ๋๊น?
๋ค๋ฅธ ๋ช
๋ น์ ๋๋ฉ์ธ์ด ๋ ์ ์๋ "์ด๊ธฐ ์ค์ผ์ผ"๊ณผ "์ค์ผ์ผ" ์ฌ์ด์๋ ๊ตฌ๋ณ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ up
๋ ๋ฉฑ๋ฑ์ฑ์ด๊ณ ๋ฐ๋์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋๋๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ์ด ๊ตฌ๋ถ์ด ์๊ฒฉํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋์ up
scale
์์ ํ ์ก์๋จน๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@mattgiles ๋์ํฉ๋๋ค. ๊ทธ๊ฒ #2496์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ ๋ถ๋ถ์ด์ง๋ง service=count
๊ฐ up
์ถ๊ฐ๋ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์์ต๋๋ค. ์ํฉ์ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ๋ณผ ์์๋ ์ ์ผํ ๋ฌธ์ ๋ ํ์ฌ up web
๊ฐ ์น ์๋น์ค์ ์ข
์์ฑ ๋ง ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค๋ ๊ฒ์
๋๋ค. up web=3
์๋ํ๋ ๊ฒ์ ๊ณ์ํด์ ๊ฐ์ ๊ฒ์ ์๋ฏธํด์ผ ํฉ๋๋ค. ์ฆ, ๋ชจ๋ ๊ฒ์ up
ํ๊ณ ์ค์ผ์ผ ์นด์ดํธ๋ฅผ ํ ๋ฒ์ ๋ฌด์ํ ์๋ ์์ง๋ง ๊ด์ฐฎ์ ๊ฒ์
๋๋ค.
์ ์์ #2496์์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
@dnephin ์ต๊ทผ ์ ์์ ๋์ณค์ต๋๋ค. ์์ฒญ๋!
fwiw, docker-compose up web=3
๊ฐ "์น" ์๋น์ค์ ๋ํ ์ธ ๊ฐ์ ์ปจํ
์ด๋์ ๋ชจ๋ ์ข
์์ฑ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ์์ ํ ์ง๊ด์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค... yaml์ ์ ์๋ ๋น์จ๋ก( scale
์ง์๋ฌธ). ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ช
๋ น์ค์์ ์ฌ์ ์ํ์ง ์๋ ํ ์์ฑ ํ์ผ์ด ๊ณ์ ์ ์ด๋ฉ๋๋ค.
up
์ ํ์ ํธ์ถ์ ํ์ฌ์ ๊ฐ์ด ๊ณ์ํด์ ๊ธฐ์กด ์ปจํ
์ด๋๋ฅผ ๊ทธ๋๋ก ๋ ์ ์์ต๋๋ค. ํ์ฌ ์ค์ผ์ผ์ด yaml์ ์ ์๋ ๊ฒ๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ง ๊ธ์ง๋ ์ค์ผ์ผ๊ณผ ์ผ์นํ๋๋ก ์นด์ดํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ ์๋ ์ฒ๋๊ฐ ์์ผ๋ฉด ์ฒ๋ 1์ ๊ณ์ ์๋ฏธํฉ๋๋ค.
--force-recreate
์ ๊ฐ์ ํญ๋ชฉ์ yaml์ ์ ์๋ ๊ฒ๋ณด๋ค ๋์ผ๋ฉด ์นด์ดํธ๋ฅผ ๊ทธ๋๋ก ๋์ง๋ง ์ฌ์ ํ ๋ค๋ฅธ ์์ฑ๊ณผ ์ผ์นํ๋๋ก ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค.
docker-compose up web=2
๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ํธ์ถํ์ฌ ํ์ฌ scale
ํ ์ ์๋ ๊ฒ์ฒ๋ผ ์ปจํ
์ด๋๋ฅผ ์ฃฝ์ผ ์ ์๋ค๋ ๊ฒ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
+1
+1 ( @pierrre ๋ฅผ ๊ท์ฐฎ๊ฒ ํ๊ธฐ
+1
์ค์ผ์ผ = x์ ๊ฒฝ์ฐ +1.
์ด์ ๊ด๋ จํ์ฌ ์ฑ๊ธํค์ ์ค๋ช
ํ๋ ๋ฐฉ๋ฒ์ ์ํฉ๋๋ค. scale=1
๊ท๋ชจ ์ต์ ์ผ๋ก ๋ชจ๋ ์ฑ๊ณต
+1
๋๋ upstream์์ ์ด๊ฒ์ ๋ํ ์๋ก์ด ๊ฒ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ํจ์น๋ฅผ ํดํนํ ์ ์๋์ง ํ์ธํ ๊ธฐํ๊ฐ ์์์ต๋๋ค.
๊ฐ์ฌ ํด์,
์ ์ด์จ ๋ฐ์ค
2016๋ 8์ 8์ผ ์คํ 5์ 19๋ถ์ lavvy [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๊ท๋ชจ ์ต์ ์ผ๋ก ๋ชจ๋ ์ฑ๊ณต
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
+1
+1
+1
+1
+1 ( @pierrre๋ฅผ ๋ค์ ๊ดด๋กญํ๊ธฐ
+1
๋๋ ์ฌ๊ฑด์ ๋ค์ ๋ฐ๋ณตํ๊ณ ์ถ๋ค
๊ท๋ชจ=0
ํ
์คํธ, ๋๋ฒ๊ทธ์ ์ ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ถ๋ฌ์ค๊ณ ์ถ์ง ์์ง๋ง ์ ์๋๊ธฐ๋ฅผ ์ํ๋ ํ๋ก๋ธ ๋ฑ์ ์๋น์ค - ์ผ๋ฐ์ ์ผ๋ก ํ์ผ์ ๋ค๋ฅธ ์๋น์ค ์ปจํ
์คํธ์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ท๋ชจ=1
์๋ํ๋ฉด ๋๋ ์ด๊ฒ๋ค ์ค ๋จ ํ๋๋ฟ์ธ - _ever_๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. MariaDB ํด๋ฌ์คํฐ์์ ํน์ ์คํ ๋ฆฌ์ง ์์ง(์: Spider, ColumnStore ๋ฑ)์ผ๋ก ๊ตฌ์ฑ๋ ๋จ์ผ ๋
ธ๋๋ง ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๊ท๋ชจ=n
์๋ฅผ ๋ค์ด ํญ์ ํ๋์ ๊ธฐ๋ณธ(๊ตฌ์ฑ ํฌํจ)๊ณผ ๋ ๊ฐ์ ๋ณด์กฐ(๊ธฐ๋ณธ ๊ตฌ์ฑ๊ณผ ๋ค๋ฅธ ๊ตฌ์ฑ)๊ฐ ์๋ MariaDB ํด๋ฌ์คํฐ์ ๊ฐ์ด ์คํ ์ค์ธ 'n' ์๋น์ค๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
@alvinr์๊ฒ ์๋ฒฝํ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ด์ด์ผ ํฉ๋๋ค.
๋ฉด์ฑ ์กฐํญ: ์ ๋ Marathon ๋๋ Mesosphere์ ๋ํ์๊ฐ ์๋๋๋ค.
์ด๊ฒ์ ๋์ปค ์ง์ ํ์์ 1๋ ๋๊ฒ ํฌ๊ธฐ/๋ฏธ๋ค์จ ์๋นํ ๊ฐ๋จํ ๊ธฐ๋ฅ ์์ฒญ์ ๋ ๋ค๋ฅธ ์์ ๋๋ค. https://github.com/docker/docker/pull/12749 ๊ฐ ๋ ๋ค๋ฅธ ์์ ๋๋ค. Kubernetes์ Marathon์ ๊ฝค ์ค๋ซ๋์ ์ด๋ฌํ ์ต์ ์ ๊ฐ์ง๊ณ ์์๊ณ ( "instances": marathon.json ํ์ผ์ 3๊ฐ) ์ฌ์ง์ด Auto Scaling์ ๊ตฌํํ์ต๋๋ค. ์ ๋ฅผ ๋์ปค ๋ฐ์ดํฐ ์ผํฐ ๋ฐ ๋ผ์์ ํ๋์ ๋ฐ์ด๋ธ ๊ฒ์ ๋์ปค ์ง์ ๊ทธ๋ฃน์ ๋ดํค์ง ์์์ ๋๋ค.
Kontena์๋ instances: 3
(https://www.kontena.io/docs/references/kontena-yml)๋ ์์ต๋๋ค.
์ด๋ฅผ ์ํํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์์ฑ ํ์ผ ๋ฒ์ 2์ scale
์น์
์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค.
์๋น์ค์์ ์ฌ์ฉ๋๋ ๋์ปค ์ ์ฉ ์ต์ ๊ณผ ํผํฉ๋์ง ์์ต๋๋ค.
์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
version: "2"
services:
worker:
image: something
command: work
scale:
worker: 2
scale: 0
๋ฅผ ์ง์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ํ๋์ ๋๋ก ๋ ๋ง๋ฆฌ์ ์๋ฅผ ์ฃฝ์ผ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋๋ https://github.com/docker/compose/issues/1896์
๋๋ค.
์ด๊ฒ์ ์๋ฌด ์๊ฐ์ด์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
3๊ฐ ๋๋ 4๊ฐ์ nodejs ์ธ์คํด์ค๋ก nginx+nodejs+mongodb๋ฅผ ๋ฐฐํฌํ๊ณ ์ถ์ต๋๋ค. ์ฑ์ ์์ํ ๋๋ง๋ค.
๋ช ๋ น์ค ์ต์ ์ด ์๋ ๊ฒฝ์ฐ yml ํ์ผ์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
docker-compose up scale nodejs=4
ํ ๊ฒ์ด๋ค.
๊ฐ๋จ ํด. ๊ทธ๋ค์ "๋ค๋ฅธ ์ฌ๋์ด ๊ตฌ์ถํ๊ณ ์ฐ๋ฆฌ๊ฐ
์ง์ํ๋ ค๊ณ ํฉ๋๋ค." ๊ธฐ๋ณธ ๋์ปค ์ธ์๋ ์์ฑํ์ง ์์์ต๋๋ค.
์๋ฌด๊ฒ. Compose๋ ๊ทธ๋ค์ด ์๋นํ ๋ค๋ฅธ ์ ํ์ด์๊ณ ์ง๊ธ์
์ด๋ฅผ ์ง์/ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ง๋ผํค ๋ฐ
kubernetes๋ swarm๋ณด๋ค ๋ ์ ๋ช
ํฉ๋๋ค.
2016๋
10์ 16์ผ ์คํ 9์ 36๋ถ, "Michael Schwartz" [email protected]
์ผ๋ค:
์ด๊ฒ์ ์๋ฌด ์๊ฐ์ด์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
3๊ฐ ๋๋ 4๊ฐ์ nodejs ์ธ์คํด์ค๋ก nginx+nodejs+mongodb๋ฅผ ๋ฐฐํฌํ๊ณ ์ถ์ต๋๋ค. ๋ชจ๋
์ฑ์ ์์ํ ๋.๋ช ๋ น์ค ์ต์ ์ด ์๋ ๊ฒฝ์ฐ yml ํ์ผ์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
docker-compose up scale nodejs=4
ํ ๊ฒ์ด๋ค.
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/1661#issuecomment -254093296,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AES98nZt1uIejnIU9iajVt54QbzdlVK1ks5q0tETgaJpZM4FS8ZQ
.
๋๋ ์์งํ ์ด๊ฒ์ ๋ํด _any_ ํธ์๋ฐฑ์ด ์๋ค๋ ์ฌ์ค์ ์ฝ๊ฐ ๋๋์ต๋๋ค.
@westlakem MacOS์ฉ Docker๊ฐ ๊ฐ์ ์ด๋ช ์ ๊ฒช์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ธฐ๋ฅ์ ํฌ๊ธฐ์ ์์ ํ ์คํ์ ํ ๋ฒ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. ํ์ฌ ์ฌ์ฉ ์ฌ๋ก์์ ์๋น์ค ์คํ์ด ์ ๋๋ก ์๋ํ๋ ค๋ฉด "workers=16"์ด ํ์ํฉ๋๋ค.
์ด๊ฒ์ ๋์ฐํฉ๋๋ค.
docker-compose up -d
docker-compose scale workers=16
docker-compose down
docker-compose up --abort-on-container-exit
๋ค์๊ณผ ๊ฐ์ด ๋ช ํํ๊ฒ ๋์ฒด๋ ์ ์์ต๋๋ค.
docker-compose up --abort-on-container-exit --scale workers=16
ํธ์ง: "Rancher"์๋ ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ docker-compose๊ฐ ์๊ณ ์ด๊ธฐ ํ์ฅ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํฉ๋๋ค. https://paypertrail.com/blog/tech/docker-rancher-and-laravel-easy-and-safe-scalability
ํด๊ฒฐ ๋ฐฉ๋ฒ์ YAML ์ต์ปค ๋ฐ ๋ณํฉ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ docker-compose ํ์ผ ๋ด์์ ์๋น์ค๋ฅผ ๋ณต์ ํ๋ ๊ฒ์ ๋๋ค.
services:
toscale: &my_service
... # all paramteres
# second instance
toscale2:
<< : *my_service
ports:
- 81:80 # override port if needed
๋ฑ ...
์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค!
์กด์ฌํ์ง ์๋๊ฒ ์ด์ํด...
๋ด๊ฐ ๋๋ฌด ๊ฒ์ผ๋ฅด๋ฏ๋ก ์ค๋ณต ์๋น์ค๋ฅผ ๋ง๋ค์ด์ผ ํ ์๋ ์์ต๋๋ค.
์ด๊ฒ์ ์ด๋ฏธ docker-compose v1์์ ์ง์๋๋ ์๊ณก๊ฐ ํ์ผ v3 https://github.com/aanand/compose-file/blob/master/schema/data/config_schema_v3.0.json ์์ ์ ์์ต๋๋ค. 10.0-rc1
๊ทธ๋ค์ "์๋น์ค" ์คํผ๋ง์๋ ๋งค๊ฐ๋ณ์๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๊ตฌ๋
์๋ ๊ฐ๋ฐ ํ์ ๋๊ตฌ๋ ์ฐ๋ฆฌ์๊ฒ ๋ค์ ์ฌ์ค์ ์๋ ค์ฃผ์ง ์์์ต๋๋ค.
์๋น์ค ์ ํ์ ํฌํจ๋์ด ์์๊ณ ๋๊ตฐ๊ฐ RC ๋
ธํธ๋ฅผ ์ฝ์ด์ผ ํ์ต๋๋ค.
๋ชจ๋ ํต์ฐฐ๋ ฅ์ ๋ํ 1.10. ๋์ปค ๋ด๋น์๋ ์ด๋์ ์์ต๋๊น?
2017๋
1์ 6์ผ(๊ธ) ์ค์ 6์ 30๋ถ, Yasmany Cubela Medina <
[email protected]>์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด๊ฒ์ ์ด๋ฏธ ์๊ณก๊ฐ ํ์ผ v3 https://github.com/aanand/ ์์ ์์ ์ค์ ๋๋ค.
compose-file/blob/master/schema/data/config_schema_v3.0.json
์ด๋ฏธ docker-compose v1.10.0-rc1์์ ์ง์๋ฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/1661#issuecomment-270886347 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AES98nOAW-h0BVaR8D9uQfLpMCQRfdyfks5rPiXEgaJpZM4FS8ZQ
.
+1
+1
์๋
ํ์ธ์ ๊ด๋ จ ์ง๋ฌธ์ด ์์ต๋๋ค.
docker-compose up
์ด ๋ด๊ฐ ์ค์ ํ ์ฒ๋๋ฅผ ๊ธฐ์ตํ ์ ์๋์ง ๊ถ๊ธํ์ต๋๋ค.
์๋ฅผ ๋ค์ด docker-compose scale nodejs_web=4
๋ค์ docker-compose down
,
๊ทธ๋ฐ ๋ค์ docker-compose up
๋ค์ ์์ํ๋ฉด 4 nodejs_web์ด ์์๋ฉ๋๋ค.
scale
๋ช
๋ น์ด ์ซ์ 4๋ฅผ ์ ์ฅํ๋ ์์น๋ฅผ ์๊ณ ์ถ์ต๋๋ค.
docker-compose.yml์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
version: '2'
services:
nodejs_web:
image: node
command: node
#2496์์ @dnephin ์ ์์ ์ง์งํฉ๋๋ค.
์ด ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์๋ ค์ฃผ์ธ์.
์ ๋ฒ์ ์ Docker์ ์๋น์ค๋ '๋ณต์ ๋ณธ' ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
2017๋
3์ 20์ผ ์์์ผ ์คํ 3์ 28๋ถ, alwaysatudent [email protected]
์ผ๋ค:
#2496์์ @dnephin https://github.com/dnephin ์ ์์ ์ง์งํฉ๋๋ค.
https://github.com/docker/compose/issues/2496
์ด ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์๋ ค์ฃผ์ธ์.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/compose/issues/1661#issuecomment-287870998 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AES98uWGEnbyCFyxNSSlv7QkXy5oBek1ks5rntNBgaJpZM4FS8ZQ
.
@westlakem - ๊ทธ ๊ธฐ๋ฅ์ ๋ผ๋ฅผ ์ํ ๊ฒ์ ๋๋ค. ์ ๊ธฐ์ ์ธ ์๋น์ค ํ์ฅ์ ์ํ ๊ฒ์ด ์๋๋๋ค.
๋๋ฌด ๋ง์ ์ฅ์ , ์ ์ ๋จ์ . ์ด ๋ฌธ์ ์ ๋ฌด์จ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
https://github.com/docker/compose/issues/2496 ์์ scale ๋ช ๋ น์ ์์ ํ ์ ๊ฑฐํ๋ ๊ฒ์ ๋ํ ์ต์ ์ ์์ด
์์ฑ ํ์ผ์ initial_scale: 3
์ต์
์ด ์๋ ์ด์ ๋๋ ์ด์ ๋ฅผ ์ ๋ง ์ดํดํ์ง ๋ชปํฉ๋๋ค( scale: 3
์ผ ์ ์๋ ์ด์ ๋ฅผ ์ดํดํฉ๋๋ค)
1.13.0์์ ๋ค์ ๊ตฌํ๋์์ต๋๋ค. ํผ๋๋ฐฑ๊ณผ ์ธ๋ด์ฌ์ ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@shin- ํ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ชจ๋ ๊ฒ์ด ์๋ํ๋๊ณ ๋ฒ์ ์ ์ด๋๋ ๋๊ท๋ชจ ์ฑ์ ๊ด๋ฆฌํ ๋ ์ด์ Docker๋ฅผ ์คํํ๋ Ansible์ ์์ ํ์ฌ ์คํํ ์๋น์ค ์ธ์คํด์ค ์๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
Ansible์ Docker๊ฐ ์คํ๋ ์ ์๋๋ก ๋ชจ๋ ๊ฒ์ ์ค์ ํด์ผ ํฉ๋๋ค. Docker๋ ์ฑ์ ํ์ํ ์๋น์ค ์ธ์คํด์ค ์๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค. ์ด์ ์๋น์ค ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์๋ ๊ฒ์ Docker์ ์ฑ ์์ด์ง๋ง Docker๋ฅผ ํธ์ถํ๋ Ansible์ ์ฑ ์์ ํ์ ํ ์ปจํ ์ด๋ ์๋ฅผ ์ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
@greenscar ์ฃ์กํฉ๋๋ค. ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ ํํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ธฐ๋ฅ์ด ๊ตฌํ๋ ๋ฐฉ์์ด ๋ง์์ ๋ค์ง ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ํ ์ ์์ต๋๊น?
์ด๊ฒ์ด ๋ฒ์ 3์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? "deploy.replicas"์ "up"์ด ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ํผ๋์ค๋ฝ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ด v3์์ ๋๋ฝ๋์๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
@cgarciae deploy.replicas
๋ scale
์ ๊ฐ์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋น์ ์ด ๋ณด๊ธฐ์ ๊ทธ๊ฒ๋ค์ด ๋๋ฑํ์ง ์์ ์ด์ ๋ ๋ฌด์์
๋๊น?
@shin- ๋ผ๋ฅผ ๋ง๋ค๊ณ ์ถ์ง ์๊ณ docker-compose up -d
๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ docker compose๋ "๋ฐฐํฌ" ์ค์ ์ ๋ฌด์ํ๋ค๊ณ ์๋ ค์ค๋๋ค.
@cgarciae Swarm์ ์์ฑํ์ง ์์ผ๋ ค๋ฉด ์ v3 ํ์ผ์ ์ฌ์ฉํฉ๋๊น?
docker๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์ scale ๋งค๊ฐ๋ณ์๊ฐ docker 2 ๋๋ 3 ํ์ผ์์ ์๋ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ์ด์ ๊ฐ ์์ผ๋ฉฐ deploy.replicas์ ๊ธฐ๋ณธ๊ฐ๋ ์ค์ ํ ์ ์์ต๋๋ค. deploy.replicas๊ฐ ์ค์ ๋๋ฉด Swarm์ ๊ท๋ชจ๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์์ํ๋ ๊ฒ๊ณผ๋ ๋ณ๊ฐ๋ก ์ด ๊ทธ๋ฆผ์ ๋ฌธ์ ์ ์ ๋ฌด์์ ๋๊น(๋ฌผ๋ก ๋ง์์ ๋ค์ง ์์ผ๋ฉด docker-compose.yml์์ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค)?
๋๋ฝ๋ scale ๋งค๊ฐ๋ณ์๋ก ์ธํด ์๋น์ค๊ฐ ์คํจํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ค์ ๋ฐฐํฌํ ์ดํ๋ก ์ด์ ์ฒ๋ผ ํ์ฅํ๋ ๊ฒ์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด ๋ฌธ์ ๋ ์น์ญ์์ค. docker compose ๊ตฌ์ฑ ๋ด์์ ์์ํ ์๋น์ค ์๋ฅผ ์ง์ ํ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ ๊ฐ์ต๋๊น? docker compose ๋ฌธ์์ docker-compose์ ์๋ํ์ง ์๋ ๊ฒ๋ค์ ๋ํ ๋ง์ ๋ฌธ์๊ฐ ์๋ค๋ ๊ฒ์ ํจ์ฌ ๋ ํผ๋์ค๋ฝ์ต๋๋ค...
์ ์ ๊น, ๋ด docker compose config๋ฅผ version: "2.2"
๋ก ๋ณ๊ฒฝํ๋ฉด scale: 2
์์ง๋ง ์ดํ ๋ฒ์ ์ผ๋ก ์ด๋ํ๋ ค๋ ๊ฒฝ์ฐ ๋ ์ด์ ์ด๋ฅผ ์ํํ ์ ์๋ ์ต์
์ด ์์ต๋๊น?
์ข์, ์ด "๋ฒ์ " ๋ฌธ์ ๋ ์ค์ ๋ก ๋ฒ์ ์ด ์ด๋ฏธ ์ฌ๋ผ์๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค. https://github.com/docker/compose/issues/4693
2.2์ ์กด์ฌํ์ง ์๋ ์ผ๋ถ ๊ตฌ์ฑ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ v3.6์ ์ฌ์ฉํฉ๋๋ค. ๋ก์ปฌ ๊ฐ๋ฐ์ ์ํด ๋ผ๋ฅผ ์ฌ์ฉํ์ง ์์ง๋ง docker-compose.overrides.yml์ ์ผ๋ถ ์ปจํ ์ด๋์ scale=0์ ์ค์ ํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ค ์ค ์ผ๋ถ๋ frontendbuild ์ปจํ ์ด๋์ ๊ฐ์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ์ปจํ ์ด๋๋ ์คํ ์ค์ธ ๋ค๋ฅธ ์ปจํ ์ด๋์ ์ผ๋ถ ๋ณผ๋ฅจ์ ๊ณต์ ํ์ง๋ง docker-compose up์์ ์ด๋ฌํ ๋ค๋ฅธ ์ปจํ ์ด๋์ ํจ๊ป ์์ํ๋ฉด ์ ๋ฉ๋๋ค. ๋ฐ๋ผ์ buildcontainer๋ run ๋ช ๋ น์ผ๋ก ์คํ๋ฉ๋๋ค. ์, docker-compose up์ ํธ์ถํ ๋ --scale ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ง๋ง ๊ตฌ์ฑ์ ์ง์ ์์ฑํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. :)
scale ๋งค๊ฐ๋ณ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๊ตฌ๋ Consul๊ณผ Vault์ HA ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ๋นํ๋ก๋์
docker-compose.yml
์ฌ์ฉํ ์ ์์์ต๋๋ค. scale ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ HA ๊ตฌ์ฑ์ ์ฝ๊ฒ ํ๋ก๋น์ ๋ํ ์ ์์ต๋๋ค. https://github.com/samrocketman/docker-compose-ha-consul-vault-ui
์ด ๊ฒฝ์ฐ ๋๊ตฐ๊ฐ๊ฐ HA ๊ตฌ์ฑ์์ Consul ๋ฐ Vault๋ฅผ ์๋ํ๊ณ Consul DNS๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ค ๋ฒ์ ์ docker compose๋ฅผ ์คํํ๊ณ ์์ต๋๊น? v3 ์ดํ๋ก ์ด ๊ธฐ๋ฅ์ ์ญ์ ๋์์ผ๋ฏ๋ก(์ญ์ ๋ก ์ธํด ๊ตฌํ๋ ์ ์ด ์์) ๋ฌด์๋ฉ๋๋ค. https://docs.docker.com/compose/reference/scale/ ์ฐธ์กฐ
๊ธฐ๋ฅ์ด ๋ถ์กฑํ์ฌ v3 ํ์์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๊ฐ์ฅ ๋ฎ์ 2.1 ๋๋ 2.2 ํ์์ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
ํธ์ง: v3 ํ์์ ํผํ๋ ๊ฒ์ ์๋๋๋ค. ์์ฑ ํ์ผ์ ์์ฑํ๋ ค๊ณ ํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ ํญ๋ชฉ์ด ๋๋ฝ๋์์ต๋๋ค.
์ข์, ๋๋ ๋น์ ์ด docker compose with swarm stack์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ ๊ฐ์์. ๊ทธ๋์ ๊ทธ๋ฐ ๊ฒ์ ๋๋ค. ์๋ํ ์ ์ ์์ง๋ง ์ค์ผ์คํธ๋ ์ดํฐ์ ๋ค์ค ๋ ธ๋ ์์ด docker compose๋ก HA์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ ์ด์ํฉ๋๋ค. "poc" ๋๋ ํ ์คํธ ๋ชฉ์ ์ ๋๊น? ์ด์จ๋ ๋๋์ด ๋งฅ๋ฝ์์ ์๋ํ ์ ์ด ์๋ค.
์ด ๊ฒฝ์ฐ HA๋ ๋จ์ํ ์์ฌ ํด๋ฌ์คํฐ์ ๋ณผํธ ํด๋ฌ์คํฐ๋ฅผ ๋ํ๋ ๋๋ค. ์คํ์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ ์ฆ๋ช ๊ณผ ๋ถํธ์คํธ๋ฉ์ ์ฉ์ด์ฑ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. HA๋ ๋์ปค HA ๋๋ ๋ค์ค ์์คํ HA๋ฅผ ์ฐธ์กฐํ์ง ์์ต๋๋ค. ์คํํ๋ ์ฌ๋์ด ํด๋ฌ์คํฐ ์ปจํ ์ด๋ ์ค ํ๋๋ฅผ ์ข ๋ฃํ๊ณ ์์ฌ ๋ฐ/๋๋ ๋ณผํธ ์๋น์ค๊ฐ ์ํฅ์ ๋ฐ์ง ์์์ ํ์ธํ ์ ์๋ค๋ ์ ์์ ์ ์ผํ HA์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ผ๋ฐ์ ์ผ๋ก ์์ํ๊ณ ์ถ์ง ์์ ํ ์คํธ ๊ด๋ จ ์๋น์ค์ ๋ํด yml์
scale=0
๋ฅผ ์ค์ ํ๊ณ ์ถ์ต๋๋ค.docker-compose run
๋๋ ๋ช ์์ scale
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์๋น์ค๋ฅผ ๋ช ์์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค.