2022. 11. 18. 01:33ใBackend/Docker
๐ง 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์์ ๋น๋๋ ์ด๋ฏธ์ง์ ์ต์ข ์ํ๋ฅผ ์๋ฏธํ๋ค.
'Backend > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Dockerfile ๋ช ๋ น์ด & build ์ต์ (0) | 2022.11.18 |
---|---|
[Docker] Dockerfile๋ก ์ด๋ฏธ์ง ์์ฑํ๊ธฐ (1) | 2022.11.15 |
[Docker] ๋์ปค ํ๋ธ ์ ์ฅ์์ ์ด๋ฏธ์ง ๋ฐฐํฌํ๊ธฐ (0) | 2022.11.05 |