Docker๋Š” ์žฅ๋‚œ๊ฐ์ธ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์•„์ง๋„ ์‚ฌ์‹ค์ธ๊ฐ€์š”?

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ!

๋‚˜๋Š” ์ฃผ์ œ์— ๋Œ€ํ•ด ๊ณง๋ฐ”๋กœ ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋‚ด ์ด์•ผ๊ธฐ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์ž…

์ €๋Š” ์„œ๋ฒ„์—์„œ ํ”„๋ŸฐํŠธ์—”๋“œ ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, scala/java ๋ฐ nodejs๋ฅผ ๊ฐœ๋ฐœํ•œ ๊ฒฝํ—˜์ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์ž…๋‹ˆ๋‹ค.

๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ(ํ™•์‹คํžˆ XNUMX~XNUMX๋…„) ์ €๋Š” Docker๊ฐ€ ์ฒœ๊ตญ์—์„œ ์˜จ ๋งŒ๋‚˜์ด๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค์šฐ ๋ฉ‹์ง„ ๋„๊ตฌ์ด๋ฉฐ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋Š” ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— Docker๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์˜๊ฒฌ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋™์ผํ•œ hh์— ๊ฒŒ์‹œ๋œ ๊ณต์„์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๋งค ๋‘ ๋ฒˆ์งธ์—๋Š” docker์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด ๊ฒฝ์Ÿ ์šฐ์œ„๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜‰

๊ฐ€๋Š” ๊ธธ์— ์ €๋Š” Docker์™€ ๊ทธ ์ƒํƒœ๊ณ„์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํƒœ๋„๋ฅผ ๊ฐ€์ง„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ์ด๊ฒƒ์ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ธฐ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์™€ ๊ทธ๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ์„ธ ๋ฒˆ์งธ๋Š” ์ „ํ˜€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๊ท€์ฐฎ๊ฒŒ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๊ทธ๋“ค์€ ๋‹จ์ง€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ง‘์œผ๋กœ ๊ฐ”์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋ถ€๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ• :)

์‚ฌ์šฉ ์ด์œ 

์™œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ–ˆ๋‚˜์š”? ์•„๋งˆ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ  ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถœ์‹œ, 99%์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด๋ฅผ ์‚ฌ์šฉ
  • ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด nginx๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋ฐฑ์—”๋“œ๋กœ ํ”„๋ก์‹ฑ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋„์ปค๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•˜๊ณ  ๋ฐฐํฌ ๋ฌธ์ œ๊ฐ€ ์ฆ‰์‹œ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰์‹œ ์„œ๋น„์Šค ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ์ปจํ…Œ์ด๋„ˆ(๊ณตํ†ต ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋จ)๋Š” ๋ณ„์นญ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ์‰ฝ๊ฒŒ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์—์„œ "๋†€์ด"ํ•˜๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•ญ์ƒ docker์— ๋Œ€ํ•ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž‘๋™ํ•˜๋ ค๋ฉด ์„œ๋ฒ„์— Docker ์ž์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด jre ๋˜๋Š” nodejs์—์„œ ์‹คํ–‰๋˜๊ณ  ํ•ด๋‹น ํ™˜๊ฒฝ์ด ์ด๋ฏธ ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๋กœ์ปฌ๋กœ ๊ตฌ์ถ•๋œ ๋‚ด (๊ฐœ์ธ) ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ž์ฒด docker ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์–ด๋”˜๊ฐ€์—์„œ ์ž‘๋™ํ•  ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ docker cli๋Š” https๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— https๋„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„ ์  ์žฅ... ๋ฌผ๋ก  ๋‹ค์Œ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋Š” ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. docker save scp๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค... ๊ทธ๋Ÿฐ๋ฐ ๋ชธ์˜ ์›€์ง์ž„์ด ๋„ˆ๋ฌด ๋งŽ์•„์š”. ๊ฒŒ๋‹ค๊ฐ€ ์ž์‹ ์˜ ์ €์žฅ์†Œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „๊นŒ์ง€๋Š” "๋ชฉ๋ฐœ" ์†”๋ฃจ์…˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
  • docker-compose. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‹ค์•ผ. ๊ทธ๋Š” ๋‹ค๋ฅธ ์–ด๋–ค ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Docker-compose ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ํŒŒ์ผ๊ณผ ์ž์ฒด ๊ตฌ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋ฆฌ ์„ ์–ธ์ ์ด๋ผ๋„ ๋‚˜๋Š” ๊ทธ๋“ค์˜ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํŒ€์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ Dockerfile์„ ๋งค์šฐ ๋น„๋šค๊ฒŒ ์ž‘์„ฑํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์บ์‹œ๋˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ , ํ•„์š”ํ•˜๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ฒƒ์„ ์ด๋ฏธ์ง€์— ์ถ”๊ฐ€ํ•˜๊ณ , Dockerhub ๋˜๋Š” ๊ฐœ์ธ ์ €์žฅ์†Œ์— ์—†๋Š” ์ด๋ฏธ์ง€์—์„œ ์ƒ์†ํ•˜๊ณ , ์ผ๋ถ€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. docker-compose ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ง€์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ๊ฐœ๋ฐœ์ž๋“ค์€ Docker๊ฐ€ ํ›Œ๋ฅญํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋กœ์ปฌ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ HR์€ ๊ณต์„์— "์šฐ๋ฆฌ๋Š” Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ทธ๋Ÿฌํ•œ ์—…๋ฌด ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ํ›„๋ณด์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” Docker์—์„œ postgresql, kafka, redis ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ ๋†’์ด๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ƒ๊ฐ์— ๋Š์ž„์—†์ด ์‹œ๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ธ‰์—…์ฒด ์ž์ฒด๊ฐ€ ์•„๋‹Œ ํƒ€์‚ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ฆ‰์‹œ ์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. ๊ณต๊ธ‰์—…์ฒด๋Š” Docker์—์„œ ์ œํ’ˆ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”? ๋ญ”๊ฐ€ ์•Œ๊ณ  ์žˆ์„๊นŒ์š”?
  • ์ปจํ…Œ์ด๋„ˆ ๋ฐ์ดํ„ฐ์˜ ์ง€์†์„ฑ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์€ ํ•ญ์ƒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•ด์•ผ ํ•˜๋Š”์ง€, ๋„์ปค ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์ง€๊ธˆ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. deprecated? ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•˜๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ์‚ฌ์šฉ์ž์˜ uid ๋ฐ gid๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•œ ์‚ฌ์šฉ์ž์˜ ID์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ์ด ๋ฃจํŠธ ๊ถŒํ•œ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด volume ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ถ€์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. /usr/* ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ uid์™€ gid์— ๋Œ€ํ•ด์„œ๋„ ๊ฐ™์€ ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์„ค๋ช…์„œ๋ฅผ ์ฝ๊ณ  "๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํŒŒ์ผ์„ ์“ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์–ด๋””์ž…๋‹ˆ๊นŒ?"๋ผ๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” Docker๋ฅผ ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ๋งŒ์ง€์ž‘๊ฑฐ๋ ค์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ํ•ญ์ƒ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•, ์‹œ์ž‘ํ•  ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ธด Docker ๋ช…๋ น์— ๋Œ€ํ•œ ๋ณ„์นญ์ด ํฌํ•จ๋œ Makefile์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” docker ์ƒํƒœ๊ณ„์˜ ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— docker-compose๋ฅผ ์‹ซ์–ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  docker-compose up ๊ทธ๊ฒŒ ๋งˆ์Œ์— ๊ฑธ๋ ธ์–ด์š”. ํŠนํžˆ ๊ทธ๋“ค์ด ์•„์ง๋„ ๊ทธ๊ณณ์—์„œ ๋งŒ๋‚œ๋‹ค๋ฉด ๋ง์ด์ฃ . build ์ด๋ฏธ ์กฐ๋ฆฝ๋œ ์ด๋ฏธ์ง€๊ฐ€ ์•„๋‹Œ ๊ฑด์ถ•๋ฌผ. ๋‚ด๊ฐ€ ์ •๋ง๋กœ ์›ํ–ˆ๋˜ ๊ฒƒ์€ ๋‹จ์ง€ ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์•ค์„œ๋ธ” ์†Œ๊ฐœ

์ตœ๊ทผ(XNUMX๊ฐœ์›” ์ „) ์ €๋Š” DevOps ํŒ€๊ณผ ํ•จ๊ป˜ ์ผํ–ˆ๋Š”๋ฐ, ๊ทธ ํŒ€์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์›์ด Docker์— ๋Œ€ํ•ด ๋ถ€์ •์ ์ธ ํƒœ๋„๋ฅผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด์œ :

  • docker ๊ทœ์น™ iptables(daemon.json์—์„œ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Œ)
  • docker๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์–ด์„œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • docker ๋ฐ๋ชฌ์ด ์ถฉ๋Œํ•˜๋ฉด ๊ทธ์— ๋”ฐ๋ผ ์ธํ”„๋ผ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.
  • ๋„์ปค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • Ansible๊ณผ ๊ฐ€์ƒ ๋จธ์‹ ์ด ์žˆ๋‹ค๋ฉด docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

๊ฐ™์€ ์ง์žฅ์—์„œ ์ €๋Š” ๋˜ ๋‹ค๋ฅธ ๋„๊ตฌ์ธ Ansible์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์€ ๋“ค์–ด๋ดค์ง€๋งŒ ๋‚˜๋งŒ์˜ ํ”Œ๋ ˆ์ด๋ถ์„ ์“ฐ๋ ค๊ณ  ๋…ธ๋ ฅํ•œ ๊ฑด ์•„๋‹ˆ์—ˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ์ž‘์—…์„ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๋‚ด ๋น„์ „์ด ์™„์ „ํžˆ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค! Ansible์—๋Š” ๋™์ผํ•œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€ ๋นŒ๋“œ, ๋„คํŠธ์›Œํฌ ๋“ฑ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด ์žˆ์œผ๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋กœ์ปฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค! ๋‚˜์˜ ๊ธฐ์จ์€ ๋์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” NORMAL ๋„๊ตฌ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  Makefile๊ณผ docker-compose ํŒŒ์ผ์„ ๋ฒ„๋ฆฌ๊ณ  yaml ์ž‘์—…์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ์ค„์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. loop, when๋“ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ Docker

๋‚˜๋Š” ์ตœ๊ทผ์— SSH ํ„ฐ๋„์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์„œ๋ฒ„์˜ ํฌํŠธ๋ฅผ ๋กœ์ปฌ ํฌํŠธ๋กœ "์ „๋‹ฌ"ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์„œ๋ฒ„๋Š” ํด๋ผ์šฐ๋“œ์˜ ๋จธ์‹ ์ด๊ฑฐ๋‚˜ VirtualBox์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋™๋ฃŒ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋˜๋Š” ๋‹ค๋ฅธ ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ)๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ ์ „๋‹ฌ์€ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์€ ๋‚ด ๋กœ์ปฌ ํฌํŠธ๋ฅผ postgresql์„ ์‹คํ–‰ํ•˜๋Š” ์›๊ฒฉ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

ssh -L 9000:๋กœ์ปฌ ํ˜ธ์ŠคํŠธ:5432 [์ด๋ฉ”์ผ ๋ณดํ˜ธ]

์›๊ฒฉ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒ€ ๊ฐœ๋ฐœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ postgresql์„ ๊ตฌ์„ฑํ•˜๊ณ  Docker ๋ฐ ๊ธฐํƒ€ ๋ณต์žกํ•œ ์‚ฌํ•ญ์„ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์„œ๋ฒ„์—์„œ๋Š” ํŠน์ • ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ Docker ์ž์ฒด์— ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์€ SSH ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ตœ๊ทผ SSH ํ„ฐ๋„์ด ์ผ๋ฐ˜ VPN์˜ ์ œํ•œ๋œ ๊ธฐ๋Šฅ์ด๋ผ๋Š” ๊ฒƒ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค! OpenVPN ๋˜๋Š” ๊ธฐํƒ€ VPN ๊ตฌํ˜„์„ ์„ค์น˜ํ•˜๊ณ  ์ธํ”„๋ผ๋ฅผ ์„ค์ •ํ•œ ํ›„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋ฉ‹์ ธ!

๋‹คํ–‰ํžˆ AWS, GoogleCloud ๋“ฑ์€ XNUMX๋…„ ๋ฌด๋ฃŒ ์‚ฌ์šฉ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ผญ ์ด์šฉํ•ด ๋ณด์„ธ์š”! ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ๊บผ๋‘๋ฉด ๊ฐ€๊ฒฉ์ด ์ €๋ ดํ•ด์ง‘๋‹ˆ๋‹ค. gcloud ๊ฐ™์€ ์›๊ฒฉ ์„œ๋ฒ„๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€ ๋Š˜ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ, ์ฐพ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ๋Š” Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ™œ๋ฐœํžˆ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ Alpine์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„, ๋˜๋Š” ๋จธ์‹  ๋ถ€ํŒ…์„ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ๋‹ค๋ฅธ ๊ฒฝ๋Ÿ‰ ๋ฐฐํฌํŒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก : ์›๊ฒฉ ์„œ๋ฒ„๋‚˜ VirtualBox์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๊ธฐํƒ€ ์ธํ”„๋ผ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชฉ์ ์—๋Š” ๋„์ปค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€ ๋ฐ ๋ฐฐํฌ์— ๋Œ€ํ•ด ์กฐ๊ธˆ

๋‚˜๋Š” ์ด๋ฏธ ์ผ๋‹ค. ัั‚ะฐั‚ัŒัŽ ์—ฌ๊ธฐ์„œ ์ €๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ์–ด๋– ํ•œ ๋ณด์žฅ๋„ ์ œ๊ณต๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ์—๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Docker ์ด๋ฏธ์ง€๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ์ œํ’ˆ์„ Docker ์ด๋ฏธ์ง€๋กœ๋งŒ ํฌํŒ…ํ•˜๋Š” ๊ณณ์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋Œ€๋ถ€๋ถ„์˜ ์ œํ’ˆ์˜ ๊ฒฐ๊ณผ๋Š” ํŠน์ • ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด๋ฉฐ, ์›ํ•˜๋Š” ํ”Œ๋žซํผ์—์„œ ์ƒ์†๋œ ๋„์ปค ์ด๋ฏธ์ง€์— ์ถ”๊ฐ€๋˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. dockerhub์— ๋น„์Šทํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€์ง€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‚˜์š”? ์˜ˆ๋ฅผ ๋“ค์–ด nginx๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค์˜ 100500๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ๋žŒ๋“ค์€ nginx ์ž์ฒด๋ฅผ ๊ฐœ๋ฐœํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋‹จ์ˆœํžˆ ๊ณต์‹ nginx๋ฅผ docker ์ด๋ฏธ์ง€์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ž์ฒด ๊ตฌ์„ฑ์œผ๋กœ ์–‘๋…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ˆ„๊ตฐ๊ฐ€ docker์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ„๋‹จํžˆ tgz์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Dockerfile์— tgz๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์›ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ƒ์†ํ•˜๊ณ  tgz์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ถ”๊ฐ€ ๋นต์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ tgz๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์ž‘์—…์— ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค ์—ฌ๊ธฐ์—

๊ฒฐ๋ก : ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ S3๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Google ๋“œ๋ผ์ด๋ธŒ/๋“œ๋กญ๋ฐ•์Šค์™€ ๊ฐ™์€ ํŒŒ์ผ ์ €์žฅ์†Œ๋งŒ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

CI์˜ ๋„์ปค

์ œ๊ฐ€ ๋‹ค๋…”๋˜ ํšŒ์‚ฌ๋“ค์€ ๋‹ค ๋น„์Šทํ–ˆ์–ด์š”. ๊ทธ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‹๋ฃŒํ’ˆ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ•˜๋‚˜์˜ ๊ธฐ์ˆ  ์Šคํƒ(์Œ, ์•„๋งˆ๋„ ๋‘์„ธ ๊ฐ€์ง€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋“ค ํšŒ์‚ฌ๋Š” CI ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„์—์„œ Docker๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์งˆ๋ฌธ: ์„œ๋ฒ„์˜ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•„์š”ํ•œ ๋ฒ„์ „์˜ nodejs, php, jdk๋ฅผ ์„ค์น˜ํ•˜๊ณ  SSH ํ‚ค ๋“ฑ์„ ๋นŒ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋  ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๋Š” Ansible ํ”Œ๋ ˆ์ด๋ถ์„ ์ž‘์„ฑํ•˜๋Š” ๋“ฑ ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”?

์ด์ œ ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‚ด ๋ฐœ์— ์ด์„ ์˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด docker๋Š” ๊ฒฉ๋ฆฌ๋กœ ์ธํ•ด ์ด์ต์„ ์–ป์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Docker์˜ CI์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ:

  • ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ ค๋ฉด ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ž์‹ ๋งŒ์˜ dockerfile์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • 90%๋Š” ๋„์ปค ์ด๋ฏธ์ง€์— ์“ฐ๊ณ  ์‹ถ์ง€ ์•Š์€ ์ผ๋ถ€ SSH ํ‚ค, ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ์บ์‹œ๋„ ํ•จ๊ป˜ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋นŒ๋“œ์—์„œ๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ์„ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ  ๋น„ํšจ์œจ์ ์ด๋ฉฐ ์‹œ๊ฐ„์€ ๊ณง ๋ˆ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ €๋Š” ํ•œ๋•Œ ๊ทธ๋Ÿฐ ํŒฌ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ์ œ ์ž์‹ ์ด ์•ˆํƒ€๊น์Šต๋‹ˆ๋‹ค. xD). Java์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ์žˆ๊ณ  ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ์ง€๊ธˆ ํ•„์š”ํ•œ ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. nodejs์—๋„ ๋™์ผํ•˜๋ฉฐ nvm์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ

๋‚˜๋Š” docker๊ฐ€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ ๋„๊ตฌ๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹จ์ ์ž…๋‹ˆ๋‹ค(์ด์ƒํ•˜๊ฒŒ ๋“ค๋ฆฌ๋„ค์š”, ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค). ๋„์›€์„ ๋ฐ›์œผ๋ฉด ๊ธฐ์—…์€ ์‰ฝ๊ฒŒ ๊ทธ๊ฒƒ์— ๋น ์ ธ ํ•„์š”ํ•  ๋•Œ์™€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ปจํ…Œ์ด๋„ˆ์™€ ์ผ๋ถ€ ํ™˜๊ฒฝ์„ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๋ชจ๋“  ๊ฒƒ์ด CI์™€ ํ”„๋กœ๋•์…˜์œผ๋กœ ์›ํ™œํ•˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ‘๋‹ˆ๋‹ค. DevOps ํŒ€์€ ์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ข…์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์—์„œ๋งŒ docker๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ž‘์—… ๋‹จ๊ณ„์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ๋กœ ๋Œ์–ด์˜ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ๊ท€ํ•˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฅธ ์ˆ˜์ค€์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ๊ทธ ์ž์‹ ์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•  ๋ฟ์ด๋ฉฐ, ๋‹น์‹ ์€ ์ด์ค‘ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„์ปค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ: ๋‚˜๋Š” docker๊ฐ€ ํŠน์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ๋Š” ๋งค์šฐ ๋Šฅ์ˆ™ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ์—๋Š” ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ docker๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

  • ๊ทน๋„๋กœ ์กฐ์‹ฌํ•˜๋‹ค
  • ๊ฐœ๋ฐœ์ž์—๊ฒŒ Docker๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€ ๋งˆ์„ธ์š”
  • ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ์„ ํ˜„์ง€ํ™”ํ•˜๊ณ  ๋ชจ๋“  Dockefile ๋ฐ docker-compose ์ €์žฅ์†Œ์— ๋ถ„์‚ฐ์‹œํ‚ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ถ”์‹ :

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์—…๋ฌด์—์„œ ํˆฌ๋ช…ํ•œ ๊ฒฐ์ •๊ณผ ์ƒ์‚ฐ์ ์ธ ๊ทผ๋ฌด์ผ์„ ๊ธฐ์›ํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€