您的位置 首页 golang

如何将golang程序的镜像压缩到4MB么?请看这里

如何将golang程序的镜像压缩到4MB么?

最初go程序的大小是17MB。

首先我使用 upx 将它压缩到4MB。

这是一个压缩二进制的工具。

具体命令:

 GOOS=linux GOARCH=amd64 go build -ldflags "-a -s -w"  // 这里-ldflags去掉些符号。
upx -9 -k viot-worker  // -k是保留备份的意思,viot-worker是二进制文件的名称,替换成你们的就可以了。  

现在是4MB,但是还没有打包成镜像

由于之前看过其他大佬的文章,所以我精心挑选一个镜像它叫 iron/base ,只有一个7MB的基础镜像。

然后我通过以下Dockerfile将go程序打包成镜像。简化了些跟文章无关的内容。

 FROM iron/base
WORKDIR /root
COPY viot-worker /root

RUN chmod +x viot-worker
ENTRYPOINT ["./viot-worker"]  

打包镜像的命令

 docker build -t demo/viot-worker:3 .  

这个时候整个镜像到了15MB

然后我出动了镜像压缩神器docker-slim。

执行了下面命令。

 docker-slim build demo/viot-worker:3 --http-probe=false  

中途出现红色字体,点击回车就好。

生成了x.slim的镜像就是打包后的镜像,大小是4MB。

这个时候整个镜像就已经被压缩到4MB

接下来我们试试可否运行

由于我是部署在私有云的k8s上的。因此修改这个镜像地址就可以测试是否运行了。

容器重新部署后,容器日志显示已经启动成功!

现在我们已经成功将go程序打包成一个4MB的镜像并运行起来,貌似还挺快的。

现在总结一下我们的技巧。

总结技巧

  1. 使用upx压缩二进制文件,这一步从17MB->4MB。
  2. 使用iron/base镜像,让整体体积不至于太膨胀。这一步从4MB->15MB。
  3. 使用docker-slim压缩镜像,这一步从15MB->4MB。

文章来源:智云一二三科技

文章标题:如何将golang程序的镜像压缩到4MB么?请看这里

文章地址:https://www.zhihuclub.com/97339.shtml

关于作者: 智云科技

热门文章

网站地图