[Docker] ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ๋กœ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ค„์ด๊ธฐ

2022. 11. 18. 01:33ใ†Backend/Docker

728x90
๋ฐ˜์‘ํ˜•

๐Ÿง Multi-stage build๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ๋•Œ๋Š” ๋งŽ์€ ์˜์กด์„ฑ ํŒจํ‚ค์ง€์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค.
ํŠน์ • ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€๋ จ ๋นŒ๋“œ ํˆด๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

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

 

17.05 ๋ฒ„์ „ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋„์ปค ์—”์ง„์€ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Multi-stage build

  • ํ•˜๋‚˜์˜ Dockerfile ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ FROM ์ด๋ฏธ์ง€๋ฅผ ์ •์˜ํ•จ์œผ๋กœ์จ ๋นŒ๋“œ ์™„๋ฃŒ ์‹œ ์ตœ์ข…์ ์œผ๋กœ ์ƒ์„ฑ๋  ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ค€๋‹ค.
  • ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์‹คํ–‰ ํŒŒ์ผ๋งŒ ์ตœ์ข… ์ด๋ฏธ์ง€ ๊ฒฐ๊ณผ๋ฌผ์— ํฌํ•จ์‹œํ‚ด์œผ๋กœ์จ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์šฉ ์˜ˆ์‹œ

FROM golang
ADD main.go /root
WORKDIR /root
RUN go build -o /root/mainApp /root/main.go

FROM alpine: latest
WORKDIR /root
COPY --from=0 /root/mainApp . # ์ฒซ ๋ฒˆ์งธ FROM ์ด๋ฏธ์ง€์—์„œ ๋นŒ๋“œํ•œ /root/mainApp ํŒŒ์ผ์„ alpine:lates ์ด๋ฏธ์ง€์— ๋ณต์‚ฌํ•œ๋‹ค.
CMD ["./mainApp"]
  • ์ผ๋ฐ˜์ ์ธ Dockerfile๊ณผ ๋‹ค๋ฅด๊ฒŒ, 2๊ฐœ์˜ FROM์„ ํ†ตํ•ด 2๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ๋ช…์‹œ๋˜์—ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ FROM ์•„๋ž˜์—์„œ ์‚ฌ์šฉ๋œ COPY ๋ช…๋ น์–ด๋Š” ์ฒซ ๋ฒˆ์งธ FROM์—์„œ ์‚ฌ์šฉ๋œ ์ด๋ฏธ์ง€์˜ ์ตœ์ข… ์ƒํƒœ์— ์กด์žฌํ•˜๋Š” /root/mainApp ํŒŒ์ผ์„ ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€์ธ apline:latest์— ๋ณต์‚ฌํ•œ๋‹ค.
  • ์ด๋•Œ --from=0์€ ์ฒซ ๋ฒˆ์งธ FROM์—์„œ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€์˜ ์ตœ์ข… ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•