因為go
語言編譯好之后為可執行文件,不需要依賴go
語言環境即可運行,所以可以在帶go
語言的docker
鏡像中編譯,編譯完成之后將二進制文件拷貝到一個不帶go
環境的較小的鏡像即可,這里采用alpine
鏡像作為運行的鏡像,以下是Dockerfile
例子
FROM golang:alpine AS development
WORKDIR $GOPATH/src
COPY . .
RUN go build -o app
FROM alpine:latest AS production
WORKDIR /root/
COPY --from=development /go/src/app .
EXPOSE 8080
ENTRYPOINT ["./app"]
這樣制作完成的鏡像只有8.5M
的大小,其中alpine
基礎包5.53M