一般来说,制作镜像都会采用Dockerfile的方式,像java、golang这类语言的镜像,原始的都很大。docker出了这类语言轻量级的alpine镜像,但golang-alpine镜像也有300多M,直接在golang-alpine中编译代码制作容器,随随便便就有四五百M了。但是go有个很好的特性就是,它可以编译成可执行文件。这个可执行文件可以不用安装go和依赖库,在环境中直接就可以运行。于是我们可以先在golang-alpine镜像中编译代码为可执行文件,再将可执行文件放到alpine镜像中运行。具体的Dcokerfile如下:
FROM golang:alpine ASdevelopment
WORKDIR $GOPATH/src/test
COPY . .
RUN go build -o test
FROM alpine:latest AS production
WORKDIR /root/test/
COPY --from=development /go/src/test .
EXPOSE 8080
ENTRYPOINT ["./test"]
然后Dockerfile目录中使用,docker build -t test:v1 . 构建镜像
使用docker run -d --name test -p 8080:8080 test:v1 创建容器并启动~
curl 127.0.0.1:8080 可以验证下~
有疑问加站长微信联系(非本文作者)