Compose: ๊ธฐ๋Šฅ ์š”์ฒญ: yml์— scale ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€

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

compose(๊ณต์‹์ ์œผ๋กœ๋Š” ๋ฌดํ™”๊ณผ)์˜ ์‚ฌ์šฉ์ž๋กœ์„œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ(yaml ๊ตฌ์„ฑ ํŒŒ์ผ) ๋‚ด๋ถ€์—์„œ ์ฃผ์–ด์ง„ ์ •์˜(์Šค์ผ€์ผ์ด๋ผ๊ณ ๋„ ํ•จ)์— ๋Œ€ํ•ด ์‹œ์ž‘๋œ ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์„œ๋น„์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜.

์˜ˆ: ๊ตฌ๋ฌธ:

worker:
    build: rqworker
    scale: 5
    links:
       - redis
    command: rqworker -u tcp://redis 
arescale kinfeature

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

์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์„œ๋น„์Šค์— ๋Œ€ํ•ด yml์— scale=0 ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. docker-compose run ๋˜๋Š” ๋ช…์‹œ์  scale ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

@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 . ๊ทธ ์†Œ๋ฆฌ๊ฐ€ ๋งž๋‚˜์š”?

1988์€ ์ถ”์ƒ ์„œ๋น„์Šค์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@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 ํŒŒ์ผ์— ์†ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ตฌ์„ฑ ํŒŒ์ผ์— ์ผ๋ถ€ ๊ทœ๋ชจ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์ด ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ฒ™๋„๋ฅผ 3์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. docker-compose up -d ํ•˜๋ฉด ์„œ๋น„์Šค๊ฐ€ 3์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
  3. docker-compose scale service=4
  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์— ์‘๋‹ตํ•˜๋ ค๋ฉด...

๊ตฌ์„ฑ ํŒŒ์ผ์— ์ผ๋ถ€ ๊ทœ๋ชจ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์ด ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ฒ™๋„๋ฅผ 3์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. docker-compose up -d๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์„œ๋น„์Šค๊ฐ€ 3์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
  3. docker-compose scale service=4๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. docker-compose up -d๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ๋ณ€๊ฒฝํ•˜๊ณ  ์žฌ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ๋‹ค์‹œ 3์œผ๋กœ ์ถ•์†Œ๋˜๋‚˜์š”? ์ด์ œ ๊ทœ๋ชจ๋ฅผ ์™„์ „ํžˆ ๋ฌด์‹œํ•ฉ๋‹ˆ๊นŒ?
  5. ์‚ฌ๋ž‘ํ•ด
  6. ๊ดœ์ฐฎ์€
  7. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋‹น์‹ ๊ณผ ํ•จ๊ป˜
  8. ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๋Š” ๊ธฐ์กด ๋ฐฐํฌ์— ๋Œ€ํ•ด ๊ทœ๋ชจ์˜ ์—ฐ์†์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ์กด ๋ฐฐํฌ์™€ ์ƒˆ ๋ฐฐํฌ ๊ฐ„์— ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๋ฐฐํฌ์—๋Š” 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 ๋ฐ ์ฝ”๋“œ๋ฒ ์ด์Šค ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

selection_126

์œ„์˜ ๋งŽ์€ ์œ ํšจํ•œ ์ ์„ ๋ณด๋ฉด ๊ตฌ์„ฑ ํŒŒ์ผ์— 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์ž…๋‹ˆ๋‹ค.

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