320x100
320x100
multi-stage build
: 두 개의 도커 파일 중 하나를 build 이미지로 사용할 때, 빌드 이미지와 배포 이미지를 하나로 합치는 빌드 방법
: Dockerfile.build와 Dockerfile이 있을때 사용
ㆍ공식문서
: https://docs.docker.com/develop/develop-images/multistage-build/
멀티 스테이지 빌드를 사용하는 상황
ㆍ빌드용 이미지를 통해 프로그램을 빌드하고 배포용 이미지로 이를 배포하는 경우
FROM golang:1.16 AS builder
# 작업 디렉터리 변경
WORKDIR /go/src/github.com/alexellis/href-counter/
# golang.org에서 프로그램 다운로드 (빌드 프로그램으로 보임)
RUN go get -d -v golang.org/x/net/html
# 작성한 go 프로그램을 builder의 루트 디렉터리에 복사
COPY app.go ./
# go 프로그램 빌드
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
# 패키지 설치
RUN apk --no-cache add ca-certificates
WORKDIR /root/
# builder 이미지의 디렉터리에 있는 빌드된 app을 루트 디렉터리로 복사
COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./
# go 프로그램 실행
CMD ["./app"]
1. builder에서 go 이미지를 통해 go 프로그램을 빌드하고 특정 디렉터리에 저장
2. alpine 이미지에 builder의 특정 디렉터리에 있는 go 프로그램을 실행
ㆍ같은 기반 이미지를 사용하는 이미지
: FROM 이미지가 같은 이미지일 경우
docker build --target=AS에서_명명한_이름1 -t 이미지_태그명 --target=AS에서_명명한_이름2 -t 이미지_태그명
으로 빌드를 하면 2개의 이미지를 한번에 생성할 수 있음
※ p.s
: docker에 관한 책을 읽다가 multi stage build라는 개념을 알게 되어서 프로젝트에 잘 활용할 수 있을 것이라고 생각했지만 직접 실습해본 결과 이
300x250
728x90
'Container > Docker' 카테고리의 다른 글
spring 멀티스테이지 빌드 Docker 이미지 (0) | 2021.11.24 |
---|---|
nodejs 멀티스테이지 빌드 Docker 이미지 (0) | 2021.11.23 |
클라우드 환경에서 Docker 컨테이너 오케스트레이션 환경 구축 (0) | 2021.10.19 |
구글 클라우드 플랫폼을 이용하여 도커 private 이미지 관리 (0) | 2021.10.19 |
다시 정리해 보는 Docker - 도커 파일 편 (0) | 2021.10.15 |