본문 바로가기

IT/docker

docker 빌드 최적화

반응형

컴파일을 하는 프로그램인 경우, 레이어를 분리하여, 빌드된 바이너리파일 만 들어있는 파일이 최종적으로 나오게 해야 한다!

 

즉,

빌드환경 포함 + 이미지 == 엄청크다!

빌드 후, 실행파일만 포함 + 이미지 = 작아진다!

 

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 .

 

아래쪽 이미지가 훨씬 작다!!

반응형