ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

 

๐Ÿณ Docker ์ด๋ฏธ์ง€ ์ตœ์ ํ™”: 1.2GB → 57MB, 95% ์ด์ƒ ์ค„์ด๊ธฐ

Docker ์ด๋ฏธ์ง€๋Š” ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์ตœ์ ํ™”๋˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€๋กœ ์ธํ•ด
๋ฐฐํฌ ์†๋„ ์ €ํ•˜, ์Šคํ† ๋ฆฌ์ง€ ๋‚ญ๋น„, ๋ณด์•ˆ ์ทจ์•ฝ์  ์ฆ๊ฐ€ ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ธ€์—์„œ๋Š” Docker ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ 1.2GB์—์„œ 57MB๋กœ ์ค„์ด๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.


โœ… ํ•ต์‹ฌ ์ตœ์ ํ™” ์ „๋žต ์š”์•ฝ

์ „๋žต ์„ค๋ช…

์ตœ์†Œํ•œ์˜ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์‚ฌ์šฉ Alpine ๋˜๋Š” Distroless ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ํฌ๊ธฐ ์ตœ์†Œํ™”
๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๋นŒ๋“œ ํ™˜๊ฒฝ๊ณผ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ตœ์ข… ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ตœ์†Œํ™”
๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ๊ฑฐ .dockerignore๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ œ์™ธ
๋ ˆ์ด์–ด ์ˆ˜ ์ตœ์†Œํ™” RUN ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ ˆ์ด์–ด ์ˆ˜ ์ค„์ด๊ธฐ
์บ์‹œ ํ™œ์šฉ ์ตœ์ ํ™” ๋ณ€๊ฒฝ์ด ์ ์€ ๋ช…๋ น์–ด๋ฅผ ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜์—ฌ ์บ์‹œ ํšจ์œจ์„ฑ ํ–ฅ์ƒ

๐Ÿ”ง ์˜ˆ์‹œ ์ฝ”๋“œ: Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ตœ์ ํ™”

๋‹ค์Œ์€ Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ตœ์ ํ™”๋œ Dockerfile ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

# ๋นŒ๋“œ ์Šคํ…Œ์ด์ง€
FROM node:16-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .

# ์‹คํ–‰ ์Šคํ…Œ์ด์ง€
FROM node:16-alpine
WORKDIR /app
COPY --from=builder /app .
CMD ["node", "index.js"]

.dockerignore ์˜ˆ์‹œ:

node_modules
npm-debug.log
Dockerfile
.dockerignore
.git
.gitignore
README.md

๐Ÿ’ก ์ฝ”๋“œ ์„ค๋ช…

๋ฐ˜์‘ํ˜•
  1. ๋นŒ๋“œ ์Šคํ…Œ์ด์ง€ ๋ถ„๋ฆฌ:
    • Node.js ๋ชจ๋“ˆ ์„ค์น˜์™€ ์†Œ์Šค ๋ณต์‚ฌ๋ฅผ ๋ณ„๋„์˜ ๋นŒ๋“œ ์Šคํ…Œ์ด์ง€์—์„œ ์ง„ํ–‰ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ์„ ์ค„์ž…๋‹ˆ๋‹ค.
  2. ์‹คํ–‰ ์Šคํ…Œ์ด์ง€ ๊ฐ„์†Œํ™”:
    • ๋นŒ๋“œ ์Šคํ…Œ์ด์ง€์—์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒฐ๊ณผ๋ฌผ๋งŒ ๊ฐ€์ ธ์™€ ์ตœ์ข… ์ด๋ฏธ์ง€๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ถˆํ•„์š” ํŒŒ์ผ ์ œ๊ฑฐ:
    • .dockerignore๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ์— ํฌํ•จ๋˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ์ตœ์ ํ™” ๊ฒฐ๊ณผ

  • ์ดˆ๊ธฐ ์ด๋ฏธ์ง€ ํฌ๊ธฐ: 1.2GB
  • ์ตœ์ ํ™” ํ›„ ์ด๋ฏธ์ง€ ํฌ๊ธฐ: 57MB
  • ํฌ๊ธฐ ๊ฐ์†Œ์œจ: 95% ์ด์ƒ

์ด๋Ÿฌํ•œ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ์†๋„ ํ–ฅ์ƒ, ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ์ ˆ๊ฐ, ๋ณด์•ˆ ๊ฐ•ํ™” ๋“ฑ์˜ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ก ์ €์˜ ์ƒ๊ฐ

Docker ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋Š” ๋‹จ์ˆœํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋„˜์–ด,
์šด์˜ ๋น„์šฉ ์ ˆ๊ฐ๊ณผ ๋ณด์•ˆ ๊ฐ•ํ™”์—๋„ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
ํŠนํžˆ ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ์™€ .dockerignore ํ™œ์šฉ์€ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ํšจ๊ณผ์ ์ธ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

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


 

Docker ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ, Alpine ์ด๋ฏธ์ง€, .dockerignore ํ™œ์šฉ,
Node.js Docker ์ตœ์ ํ™”, Dockerfile ์ตœ์ ํ™”, ์ปจํ…Œ์ด๋„ˆ ๋ณด์•ˆ ๊ฐ•ํ™”, ๋ฐฐํฌ ์†๋„ ํ–ฅ์ƒ,
์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ์ ˆ๊ฐ, DevOps ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค

 

โ€ป ์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•