์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

Docker ๊ธฐ๋ณธ ๊ฐœ๋…, compose, entrypoint

parkjiu 2024. 11. 29. 14:13

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

 

1. ์ฃผ์š” ๊ฐœ๋…

๋„์ปค์˜ ์ฃผ์š” ๊ฐœ๋…์—๋Š” ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€, ๋„์ปคํŒŒ์ผ, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์žˆ์Œ.

 

1. ์ปจํ…Œ์ด๋„ˆ

๊ฒฝ๋Ÿ‰ํ™”๋œ ๊ฐ€์ƒ๋จธ์‹ ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ™˜๊ฒฝ์„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹œํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ๊ฐ€์ƒํ™”๋Š” Host OS ๊ทธ๋ฆฌ๊ณ  Docker ์—”์ง„์œ„์—์„œ ๋ฐ”๋กœ ๋™์ž‘ํ•˜๋ฉฐ Host์˜ ์ปค๋„์„ ๊ณต์œ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ปค๋„์„ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๋ฉด io์ฒ˜๋ฆฌ๊ฐ€ ์‰ฝ๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ์˜ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

2. ์ด๋ฏธ์ง€

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์„ค์ •์„ ํฌํ•จํ•œ ๊ฒƒ. ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด์•„์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ.

 

3. ๋„์ปค ํŒŒ์ผ

๊ฐœ๋ฐœ ์†Œ์ŠคํŒŒ์ผ๊ณผ ํ™˜๊ฒฝ์„ ์ด๋ฏธ์ง€ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ. ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ณผ์ •๊ณผ ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋ฅผ ์ •์˜

 

4. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ์žฅ์†Œ. ๋„์ปค ํ—ˆ๋ธŒ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ๊ณต๊ฐœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์ž„. ๊นƒํ—ˆ๋ธŒ์™€๋„ ๋น„์Šทํ•œ ๋А๋‚Œ์œผ๋กœ, ์ด๋ฏธ์ง€๋ฅผ pull๋ฐ›์•„์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ๋‚˜๋„ tileserver-gl์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€ ๋ฐ›์•„์™€์„œ ์ผ์Œ.

 

2. Docker compose

์—ฌ๋Ÿฌ ๊ฐœ์˜ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ. ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋กœ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•ฑ์„ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ. ์šฐ๋ฆฌ ์„œ๋น„์Šค๋„ ๊ธฐ๋ณธ ์›น์‚ฌ์ดํŠธ ์œ„์— tileserver-gl์„ ๋„์ปค ํ—ˆ๋ธŒ์—์„œ ๋ฐ›์•„์™€์„œ ์“ฐ๋Š” ํ˜•ํƒœ๋ผ, ์ปจํ…Œ์ด๋„ˆ ๋‘ ๊ฐœ๊ฐ€ ์„œ๋กœ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ธฐ์— Docker compose๋ฅผ ์“ฐ๊ฒŒ ๋จ. 

 

์ด Docker compose๋Š” YAML ํŒŒ์ผ์œผ๋กœ ์„œ๋น„์Šค, ๋„คํŠธ์›Œํฌ, ๋ณผ๋ฅจ ๋“ฑ์˜ ์„ค์ •์„ ์ •์˜ํ•œ๋‹ค. 

 

3. ์—”ํŠธ๋ฆฌํฌ์ธํŠธ(Entrypoint)

์ดˆ๊ธฐ์— tileserver-gl์ด๋ผ๋˜๊ฐ€, webpack ๊ตฌ์„ฑ์ด๋ผ๋˜๊ฐ€ ํ•˜๋Š” ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•ด์„œ ์ด ์—”ํŠธ๋ฆฌํฌ์ธํŠธ๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ๊ธฐ๋ณธ ๋ช…๋ น์–ด์ด๋‹ค. ๋„์ปค ํŒŒ์ผ ๋‚ด์— ENTRYPOINT ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์„ค์ •ํ•œ๋‹ค.

๋‚˜๋Š” ์ด๊ฑธ ์„ค์ •ํ•˜๋ฉด์„œ Dockerfile์— RUN ์ด ์žˆ๋Š”๋ฐ ์ด๊ฑธ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชฐ๋ž์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด๋‹ˆ, RUN ๋’ค์— ๋ช…๋ น์–ด๋Š” ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฑฐ๊ณ , ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฑด ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ผ์„œ ENTRYPOINT ๋ฅผ ์จ์•ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ CMD ์™€์˜ ์ฐจ์ด ๋˜ํ•œ ์ค‘์š”ํ•˜๋‹ค. CMD๋Š” ๊ธฐ๋ณธ ์‹คํ–‰ ๋ช…๋ น์–ด๋‚˜ ์ธ์ž๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ENTRYPOINT๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ENTRYPOINT์˜ ์ธ์ž๋กœ ์‚ฌ์šฉ์ด ๋œ๋‹ค. ์—†์„ ๋•Œ๋Š” CMD์‚ฌ์šฉ!

 

 

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

 

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