Alpine是一个好的选择,因为它非常小。下面的Dockerfile将给你一个小的基础镜像,但捆绑了一个过期的跟证书:
FROM alpine:3.4
RUN apk add –no-cache ca-certificates apache2-utils
来看看吧,结果镜像只有6MB!
注意:–no-cache选项告诉apk(Alpine包管理器)从Alpine的镜像发布上获取可用包的列表,不保存在磁盘上。你可能会看到Dockerfiles做这样的事apt-get update && apt-get install … && rm -rf /var/cache/apt/*;这实现了(即在最终镜像中不保留包缓存)与一个单一标志相当的东西。
一个附加的回报:把你的应用程序放入基于Alpine镜像的容器,让你获得了一堆有用的工具。如果需要,现在你可以吧shell放入容器并在它运行时做点什么。
打包
我们看到Docker如何帮助我们在干净独立的环境里编译Go代码;如何使用不同版本的Go工具链;以及如何在不同的操作系统和平台之间交叉编译。
我们还看到Go如何帮我们给Docker创建小的,容器依赖镜像,并且描述了一些静态库和网络依赖相关的微妙联系(没别的意思)。
除了Go是真的适合Docker项目这个事实,我们希望展示给你的是,Go和Docker如何相互借鉴并且一起工作得很好!
致谢
这最初是在2016年GopherCon骇客日提出的。
我要感谢所有的校对材料、提出建议和意见让它更好的人,包括但不局限于:
Aaron Lehmann
Stephen Day
AJ Bowen
所有的错误和拼写错误都是我自己的;所有的好东西都是他们的!
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:详解如何在 Docker 中设置 Go 并部署应用docker中部署golang项目的步骤详解使用docker构建golang线上部署环境的步骤详解










