因为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
网友评论