더북(TheBook)

예제 4-4 Go 애플리케이션의 멀티 스테이지 빌드를 위한 Dockerfile 스크립트 예

FROM diamol/golang AS builder

COPY main.go .
RUN go build -o /server

# app
FROM diamol/base

ENV IMAGE_API_URL="http://iotd/image" \
    ACCESS_API_URL="http://accesslog/access-log"
CMD ["/web/server"]

WORKDIR web
COPY index.html .
COPY --from=builder /server .
RUN chmod +x server

Go는 네이티브 바이너리로 컴파일된다. 그러므로 이 Dockfile 스크립트의 각 빌드 단계는 서로 다른 기반 이미지를 사용한다. builder 단계의 기반 이미지는 Go 언어의 도구가 설치된 diamol/golang이다. Go 애플리케이션 빌드는 일반적으로 의존 모듈을 내려받는 단계 없이 곧장 빌드에 들어가며(대개 main.go 단일 파일로 구성된다), 그다음 애플리케이션 단계는 최소한의 운영체제 레이어만을 포함하는 이미지를 사용한다. 여기서는 diamol/base 이미지를 사용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.