A A
[Docker] Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ & ๋ฐฐํฌ

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ๊ณผ์ •์— ๋Œ€ํ•ด ์ƒ์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Docker ์ด๋ฏธ์ง€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋ฉด, ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ์šด์˜๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” docker buildx build ๋ช…๋ น์–ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ด๋ฏธ์ง€ ๋นŒ๋“œ์™€ ๋ฐฐํฌ ๊ณผ์ •์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ 

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

Docker Buildx Build ๋ช…๋ น์–ด

Docker๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ docker build ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜์ง€๋งŒ, docker buildx build๋Š” ๋” ๊ฐ•๋ ฅํ•œ ๋นŒ๋“œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. buildx๋Š” ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ ๋นŒ๋“œ, ์บ์‹œ ๊ด€๋ฆฌ, ๋นŒ๋“œ ๋น„๋ฐ€ ๊ด€๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.


์ฃผ์š” ์˜ต์…˜ ์„ค๋ช…

docker buildx build ๋ช…๋ น์–ด๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ ๋นŒ๋“œ ๊ณผ์ •์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์š” ์˜ต์…˜๊ณผ ๊ทธ ๊ธฐ๋Šฅ์„ ์•„๋ž˜์— ์ƒ์„ธํžˆ ์„ค๋ช…๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  1. -t ๋˜๋Š” --tag
    • ์„ค๋ช…: ๋นŒ๋“œํ•  ์ด๋ฏธ์ง€์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„๊ณผ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ๋ฒ•: -t [๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ช…]:[ํƒœ๊ทธ]
    • ๊ธฐ๋ณธ๊ฐ’: ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ latest ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
    • ์ฃผ์˜์‚ฌํ•ญ: ํƒœ๊ทธ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ•๊ธ€๋ง(dangling) ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ํƒœ๊ทธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. --build-arg
    • ์„ค๋ช…: Dockerfile ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ๋นŒ๋“œ ์ธ์ž(Build Arguments)๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ๋ฒ•: --build-arg [๋ณ€์ˆ˜๋ช…]=[๊ฐ’]
    • ์˜ˆ์‹œ: --build-arg NODE_VERSION=20.15.1
    • ์šฉ๋„: ๋นŒ๋“œ ๊ณผ์ •์—์„œ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋™์ ์œผ๋กœ ์„ค์ •ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. -f ๋˜๋Š” --file
    • ์„ค๋ช…: ์‚ฌ์šฉํ•  Dockerfile์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ๋ฒ•: -f [Dockerfile ๊ฒฝ๋กœ]
    • ๊ธฐ๋ณธ๊ฐ’: ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ์˜ ์ตœ์ƒ๋‹จ์— ์žˆ๋Š” Dockerfile์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์šฉ๋„: ์—ฌ๋Ÿฌ Dockerfile์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ํŒŒ์ผ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  4. --pull
    • ์„ค๋ช…: ๋นŒ๋“œ ์‹œ ํ•ญ์ƒ ์ตœ์‹  ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ๋ฒ•: --pull
    • ์šฉ๋„: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ตœ์‹  ์ƒํƒœ๋กœ ๋นŒ๋“œํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  5. ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ
    • ์„ค๋ช…: ๋นŒ๋“œํ•  ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ URL์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ๋ฒ•: ๋งˆ์ง€๋ง‰ ์ธ์ž๋กœ ์ง€์ •ํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ .์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Docker Buildx Build ๋ช…๋ น์–ด ์˜ต์…˜ ์„ค๋ช…

 
์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ๋ฒ• ์˜ˆ์‹œ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ
-t ๋˜๋Š” --tag ๋นŒ๋“œํ•  ์ด๋ฏธ์ง€์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„๊ณผ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. -t [๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ช…]:[ํƒœ๊ทธ] - ์˜ˆ์‹œ: -t learncodeit/mbti:embedded-db
- ์ฃผ์˜์‚ฌํ•ญ: ํƒœ๊ทธ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด latest ํƒœ๊ทธ๊ฐ€ ์ž๋™์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ•๊ธ€๋ง(dangling) ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
--build-arg Dockerfile ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ๋นŒ๋“œ ์ธ์ž(Build Arguments)๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. --build-arg [๋ณ€์ˆ˜๋ช…]=[๊ฐ’] - ์˜ˆ์‹œ: --build-arg NODE_VERSION=20.15.1
- ์šฉ๋„: ๋นŒ๋“œ ๊ณผ์ •์—์„œ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋™์ ์œผ๋กœ ์„ค์ •ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
-f ๋˜๋Š” --file ์‚ฌ์šฉํ•  Dockerfile์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. -f [Dockerfile ๊ฒฝ๋กœ] - ์˜ˆ์‹œ: -f ./Dockerfile
- ๊ธฐ๋ณธ๊ฐ’: ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ์˜ ์ตœ์ƒ๋‹จ์— ์žˆ๋Š” Dockerfile์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
- ์šฉ๋„: ์—ฌ๋Ÿฌ Dockerfile์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ํŒŒ์ผ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
--pull ๋นŒ๋“œ ์‹œ ํ•ญ์ƒ ์ตœ์‹  ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. --pull - ์šฉ๋„: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ตœ์‹  ์ƒํƒœ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋นŒ๋“œ ์ปจํ…์ŠคํŠธ ๋นŒ๋“œํ•  ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ URL์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. [๋นŒ๋“œ ์ปจํ…์ŠคํŠธ] (์ผ๋ฐ˜์ ์œผ๋กœ .) - ์„ค๋ช…: ๋งˆ์ง€๋ง‰ ์ธ์ž๋กœ ์ง€์ •ํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ .์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
- ์šฉ๋„: ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋„์ปคํŒŒ์ผ ๋นŒ๋“œ ๋ช…๋ น์–ด ์˜ˆ์ œ

์•„๋ž˜๋Š” docker buildx build ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
๊ฐ ์˜ต์…˜์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์ƒ์„ธํžˆ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
docker buildx build \
  -t daehyunbigbread/mbti:embedded-db \
  -t daehyunbigbread/mbti \
  --build-arg NODE_VERSION=20.15.1 \
  -f ./Dockerfile \
  --pull \
  .

๋ช…๋ น์–ด ์„ค๋ช…

  • -t daehyunbigbread/mbti:embedded-db์™€ -t daehyunbigbread/mbti:
    • ์„ค๋ช…: ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ learncodeit/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— embedded-db ํƒœ๊ทธ์™€ latest ํƒœ๊ทธ๋กœ ๊ฐ๊ฐ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ๋™์ผํ•œ ์ด๋ฏธ์ง€์— ์—ฌ๋Ÿฌ ํƒœ๊ทธ๋ฅผ ๋ถ™์—ฌ, ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด๋‚˜ ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • --build-arg NODE_VERSION=20.15.1:
    • ์„ค๋ช…: Dockerfile ๋‚ด์—์„œ ์‚ฌ์šฉํ•  NODE_VERSION ๋นŒ๋“œ ์ธ์ž์— 20.15.1 ๊ฐ’์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: Dockerfile์—์„œ ๋™์ ์œผ๋กœ Node.js ๋ฒ„์ „์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • -f ./Dockerfile:
    • ์„ค๋ช…: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ๋ช…์‹œ์ ์œผ๋กœ ํŠน์ • Dockerfile์„ ์ง€์ •ํ•˜์—ฌ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • --pull:
    • ์„ค๋ช…: ๋นŒ๋“œ ์‹œ ํ•ญ์ƒ ์ตœ์‹  ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ตœ์‹  ์ƒํƒœ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • .:
    • ์„ค๋ช…: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ๋นŒ๋“œ์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€ ํ™•์ธํ•˜๊ธฐ

์ด๋ฏธ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œํ•œ ํ›„, ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€, ์˜ˆ์ƒํ•œ ํƒœ๊ทธ๊ฐ€ ๋ถ™์–ด์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€ ๋ชฉ๋ก ํ™•์ธ

docker image ls

์˜ˆ์‹œ ์ถœ๋ ฅ

REPOSITORY              TAG           IMAGE ID       CREATED              SIZE
daehyunbigbread/mbti        embedded-db    5dbed223aa10   About a minute ago   1.86GB
daehyunbigbread/mbti        latest         5dbed223aa10   About a minute ago   1.86GB
  • REPOSITORY: ์ด๋ฏธ์ง€๊ฐ€ ์†ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • TAG: ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ๋กœ, ํŠน์ • ๋ฒ„์ „์ด๋‚˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • IMAGE ID: ์ด๋ฏธ์ง€์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
  • CREATED: ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
  • SIZE: ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ daehyunbigbread/mbti:embedded-db์™€ daehyunbigbread/mbti:latest ๋‘ ๊ฐœ์˜ ํƒœ๊ทธ๊ฐ€ ๋™์ผํ•œ ์ด๋ฏธ์ง€ ID๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋™์ผํ•œ ์ด๋ฏธ์ง€์— ์—ฌ๋Ÿฌ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.


Docker Hub์— ์ด๋ฏธ์ง€ ๋ฐฐํฌํ•˜๊ธฐ

๋กœ์ปฌ์—์„œ ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ Docker Hub์™€ ๊ฐ™์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋ฐฐํฌํ•˜์—ฌ, ๋‹ค๋ฅธ ํ™˜๊ฒฝ์ด๋‚˜ ํŒ€์›๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker Hub๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Docker ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ, ์ด๋ฏธ์ง€๋ฅผ ์‰ฝ๊ฒŒ ํ‘ธ์‹œ(push)ํ•˜๊ณ  ํ’€(pull)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํ‘ธ์‹œ ๋ช…๋ น์–ด

Docker ์ด๋ฏธ์ง€๋ฅผ Docker Hub์— ํ‘ธ์‹œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ‘ธ์‹œํ•˜๊ธฐ ์ „์— Docker Hub์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๋จผ์ € ๋กœ๊ทธ์ธํ•˜์„ธ์š”.

Docker Hub ๋กœ๊ทธ์ธ

docker login

๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ธ์ฆ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํ‘ธ์‹œ

๊ฐœ๋ณ„ ํƒœ๊ทธ๋ฅผ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜, ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ํ•œ ๋ฒˆ์— ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ ํƒœ๊ทธ ํ‘ธ์‹œ

์—ฌ๊ธฐ์„œ daehyunbigbread๋Š” ์ œ ๊ฐœ์ธ docker ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ช… ์ž…๋‹ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ์ด๊ฑธ ๋”ฐ๋ผํ•˜์‹œ๋Š” ๋ถ„๋“ค์€ ์—ฌ๋Ÿฌ๋ถ„๊ป„๋กœ ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ค๋ช…: embedded-db ํƒœ๊ทธ์™€ latest ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ๊ฐ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํšจ๊ณผ: ๊ฐ ํƒœ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ Docker Hub์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
docker image push daehyunbigbread/mbti:embedded-db
docker image push daehyunbigbread/mbti:latest

 

๋ชจ๋“  ํƒœ๊ทธ ํ•œ ๋ฒˆ์— ํ‘ธ์‹œ

  • ์„ค๋ช…: daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ํ•œ ๋ฒˆ์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํšจ๊ณผ: daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ํƒœ๊ทธ๊ฐ€ Docker Hub์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
docker image push -a daehyunbigbread/mbti

Docker Hub์—์„œ ๋ฐฐํฌ๋œ ์ด๋ฏธ์ง€ ํ™•์ธ

์ด๋ฏธ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ‘ธ์‹œํ•œ ํ›„, Docker Hub ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜์—ฌ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

  1. Docker Hub ์›น์‚ฌ์ดํŠธ ์ ‘์†
  2. Docker Hub์— ์ ‘์†ํ•˜์—ฌ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ™•์ธ
    • ํƒœ๊ทธ ๋ชฉ๋ก: ๋ฐฐํฌํ•œ ๋ชจ๋“  ํƒœ๊ทธ(embedded-db, latest)๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฏธ์ง€ ์ •๋ณด: ๊ฐ ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ํ”„๋กœํ•„ ๋ฉ”๋‰ด์—์„œ Repositories๋ฅผ ์„ ํƒํ•˜๊ณ , ๋ฐฐํฌํ•œ daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ‘ธ์‹œ๋œ ๋ชจ๋“  ํƒœ๊ทธ์™€ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Nest.js ์„œ๋ฒ„ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ

์ด์ œ ์‹ค์ œ๋กœ Nest.js ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Docker Hub์— ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ํ•œ๋ฒˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์™ธ๋ถ€ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” mbti ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์‹ค์Šต ์š”๊ฑด

  1. ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€: node:20.15.1
  2. ์ด๋ฏธ์ง€ ๋‚ด ์†Œ์Šค ์ฝ”๋“œ ๊ฒฝ๋กœ: /apps/mbti
  3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜:
    • PORT: 3001
    • DB_HOST: localhost
    • DB_PORT: 3306
    • DB_NAME: db_mbti
    • DB_USERNAME: user_mbti
    • DB_PASSWORD: pw_mbti
  4. node_modules ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ณต์‚ฌ ๋Œ€์ƒ์—์„œ ์ œ์™ธํ•˜๊ธฐ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ

๋จผ์ €, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋งํฌ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MBTI MySQL.zip
0.10MB

 

๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ mbti-mysql.zip ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

unzip mbti-mysql.zip -d mbti-mysql
cd mbti-mysql

Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ

์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด docker buildx build ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋นŒ๋“œ ๋ช…๋ น์–ด์™€ ๊ฐ ์˜ต์…˜์˜ ์ƒ์„ธ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

docker buildx build \
    -t daehyunbigbread/mbti:mysql \
    -t daehyunbigbread/mbti \
    --pull \
    .

๋ช…๋ น์–ด ์„ค๋ช…

  • -t daehyunbigbread/mbti:mysql:
    • ์„ค๋ช…: daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— mysql ํƒœ๊ทธ๋ฅผ ๋ถ™์ธ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ํŠน์ • ๊ธฐ๋Šฅ(mysql ์—ฐ๋™)์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • -t daehyunbigbread/mbti:
    • ์„ค๋ช…: ๋™์ผํ•œ ์ด๋ฏธ์ง€์— latest ํƒœ๊ทธ๋ฅผ ๋ถ™์ž…๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ์‰ฝ๊ฒŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • --pull:
    • ์„ค๋ช…: ๋นŒ๋“œ ์‹œ ํ•„์š”ํ•œ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ํ•ญ์ƒ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ตœ์‹  ์ƒํƒœ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • .:
    • ์„ค๋ช…: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: Dockerfile๊ณผ ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ํŒŒ์ผ์ด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์‹คํ–‰ ์˜ˆ์‹œ

docker buildx build \
    -t daehyunbigbread/mbti:mysql \
    -t daehyunbigbread/mbti \
    --pull \
    .

๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Successfully built 5dbed223aa10
Successfully tagged daehyunbigbread/mbti:mysql
Successfully tagged daehyunbigbread/mbti:latest

๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€ ํ™•์ธ

๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์—์„œ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

docker image ls

์˜ˆ์‹œ ์ถœ๋ ฅ

REPOSITORY              TAG           IMAGE ID       CREATED             SIZE
daehyunbigbread/mbti    mysql         5dbed223aa10   About a minute ago  1.86GB
daehyunbigbread/mbti    latest        5dbed223aa10   About a minute ago  1.86GB
  • REPOSITORY: ์ด๋ฏธ์ง€๊ฐ€ ์†ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • TAG: ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ๋กœ, mysql๊ณผ latest ๋‘ ๊ฐ€์ง€ ํƒœ๊ทธ๊ฐ€ ๋™์ผํ•œ ์ด๋ฏธ์ง€ ID๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • IMAGE ID: ์ด๋ฏธ์ง€์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
  • CREATED: ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
  • SIZE: ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

Docker Hub์— ์ด๋ฏธ์ง€ ๋ฐฐํฌ

๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ Docker Hub์— ๋ฐฐํฌํ•˜์—ฌ, ๋‹ค๋ฅธ ํ™˜๊ฒฝ์ด๋‚˜ ํŒ€์›๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํ‘ธ์‹œ ๋ช…๋ น์–ด

docker image push daehyunbigbread/mbti:mysql
docker image push daehyunbigbread/mbti:latest

๋˜๋Š” ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ํ•œ ๋ฒˆ์— ํ‘ธ์‹œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

docker image push -a daehyunbigbread/mbti

ํ‘ธ์‹œ ๊ณผ์ • ์„ค๋ช…

  • docker image push daehyunbigbread/mbti:mysql:
    • ์„ค๋ช…: daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— mysql ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: ํ•ด๋‹น ํƒœ๊ทธ๊ฐ€ ๋ถ™์€ ์ด๋ฏธ์ง€๊ฐ€ Docker Hub์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
  • docker image push daehyunbigbread/mbti:latest:
    • ์„ค๋ช…: ๋™์ผํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— latest ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: latest ํƒœ๊ทธ๊ฐ€ ๋ถ™์€ ์ด๋ฏธ์ง€๊ฐ€ Docker Hub์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
  • docker image push -a daehyunbigbread/mbti:
    • ์„ค๋ช…: daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ํ•œ ๋ฒˆ์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ํšจ๊ณผ: mysql๊ณผ latest ํƒœ๊ทธ๊ฐ€ ๋™์‹œ์— ํ‘ธ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ‘ธ์‹œ ๊ฒฐ๊ณผ ํ™•์ธ

Docker Hub ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜์—ฌ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋ฉด, ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํŽ˜์ด์ง€: ๋ฐฐํฌํ•œ daehyunbigbread/mbti ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ mysql๊ณผ latest ํƒœ๊ทธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์—…๋กœ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํƒœ๊ทธ ๋ชฉ๋ก: ๊ฐ ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€ ์ •๋ณด์™€ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํŒ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•  ๋•Œ ์œ ์˜ํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ํŒ๊ณผ ์ฃผ์˜์‚ฌํ•ญ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํƒœ๊ทธ ๊ด€๋ฆฌ

  • ๋ฒ„์ „ ํƒœ๊ทธ ์‚ฌ์šฉ: v1.0.0, v1.0.1 ๋“ฑ ๋ฒ„์ „๋ณ„๋กœ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ํŠน์ • ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • latest ํƒœ๊ทธ ์ฃผ์˜: latest ํƒœ๊ทธ๋Š” ํ•ญ์ƒ ์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ, ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ช…์‹œ์ ์ธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๊ด€๋œ ํƒœ๊ทธ ์ „๋žต: ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ์ผ๊ด€๋œ ํƒœ๊ทธ ์ „๋žต์„ ์ˆ˜๋ฆฝํ•˜์—ฌ ๊ด€๋ฆฌ์˜ ํŽธ์˜์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ตœ์ ํ™”

์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ์‚ฌ์šฉ: ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๋„๊ตฌ๋Š” ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ์ข… ์ด๋ฏธ์ง€์—๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
# ๋นŒ๋“œ ์Šคํ…Œ์ด์ง€
FROM node:20.15.1 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build

# ์‹คํ–‰ ์Šคํ…Œ์ด์ง€
FROM node:20.15.1
WORKDIR /app
COPY --from=builder /app . 
ENV PORT=3000
ENTRYPOINT ["npm", "run", "start"]

 

  • ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ์™ธ: .dockerignore ํŒŒ์ผ์„ ํ™œ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ์ด ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ๋Ÿ‰ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์„ ํƒ: ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Alpine๊ณผ ๊ฐ™์€ ๊ฒฝ๋Ÿ‰ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
FROM node:20.15.1-alpine

์ด๋ฏธ์ง€ ๋ณด์•ˆ ๊ฐ•ํ™”

์ด๋ฏธ์ง€ ๋‚ด ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ทจ์•ฝ์ ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์‚ฌ์šฉ: ๊ณต์‹ ์ด๋ฏธ์ง€๋‚˜ ๊ฒ€์ฆ๋œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์‹  ํŒจ์น˜ ์ ์šฉ: ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋ณด์•ˆ ํŒจ์น˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์  ์Šค์บ๋‹: ์ด๋ฏธ์ง€ ๋‚ด์˜ ์ทจ์•ฝ์ ์„ ์Šค์บ”ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Docker Security Scanning ๋˜๋Š” Clair์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ดํ•ดํ•˜๊ธฐ

Docker ์ด๋ฏธ์ง€๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ ˆ์ด์–ด๋Š” ์ด์ „ ๋ ˆ์ด์–ด ์œ„์— ์Œ“์ด๋ฉฐ, ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋ ˆ์ด์–ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ณ  ์ €์žฅ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ช…๋ น์–ด ์ˆœ์„œ ์ตœ์ ํ™”: ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์–ด๋ฅผ Dockerfile ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜์—ฌ ์บ์‹œ ํšจ์œจ์„ ๋†’์ž…๋‹ˆ๋‹ค.
# ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์˜์กด์„ฑ ์„ค์น˜
RUN npm ci

# ์†Œ์Šค ์ฝ”๋“œ ๋ณต์‚ฌ
COPY . /app

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ
RUN npm run build
  • RUN ๋ช…๋ น์–ด ๊ฒฐํ•ฉ: ์—ฌ๋Ÿฌ ๊ฐœ์˜ RUN ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ ˆ์ด์–ด ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
RUN apt-get update && apt-get install -y \
    package1 \
    package2 \
    && rm -rf /var/lib/apt/lists/*

 


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

 

์ฐธ๊ณ  ์ž๋ฃŒ