构建最小golang镜像

新垣结二 · · 1036 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一般来说,制作镜像都会采用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 可以验证下~


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:新垣结二

查看原文:构建最小golang镜像

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1036 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传