반응형
컴파일을 하는 프로그램인 경우, 레이어를 분리하여, 빌드된 바이너리파일 만 들어있는 파일이 최종적으로 나오게 해야 한다!
즉,
빌드환경 포함 + 이미지 == 엄청크다!
빌드 후, 실행파일만 포함 + 이미지 = 작아진다!
golang 예제!
## 빌드환경 포함된 이미지에서 빌드하고 실행!
FROM diamol/golang
WORKDIR web
COPY index.html .
COPY main.go .
RUN go build -o /web/server
RUN chmod +x /web/server
CMD ["/web/server"]
ENV USER=sixeyed
EXPOSE 80
## 빌드 후, 리눅스만 있는 베이지 이미지에 빌드된 파일을 복사하여 생성
FROM diamol/golang AS builder
COPY main.go .
RUN go build -o /server
RUN chmod +x /server
# app
FROM diamol/base
EXPOSE 80
CMD ["/web/server"]
ENV USER="sixeyed"
WORKDIR web
COPY --from=builder /server .
COPY index.html .
아래쪽 이미지가 훨씬 작다!!
반응형