Golang应用的多场景Dockerfile
来源:互联网 发布:罗浮威尔瓷砖 知乎 编辑:程序博客网 时间:2024/06/13 22:36
Golang应用的多场景Dockerfile
一般通用的在Docker中编译Golang应用的方法需要2个Dockerfile——一个用于平台编译,另一个用于打包第一个镜像中编译的不包含工具的结果。这个叫编译模式。
自从Dockerv17.05
版本后可以通过单个Dockerfile文件来使用多场景构建。
应用
开始一个”Hello World”应用:
package mainimport "fmt"func main() { fmt.Println("Hello world!")}
单个Dockerfile
在多场景构建中,单个Dockerfile允许多个FROM
指令,并且最终构建的镜像来源于Dockerfile中最后一个FROM
指令。
COPY -from=0
将获取来源于之前场景中的app
文件并复制到WORKDIR
。这将复制最基本的来源之前场景中创建编译的go的二进制文件。
FROM golang:1.8.1WORKDIR /go/src/test/COPY main.go .RUN GOOS=linux go build -o app .FROM alpine:latestRUN apk --no-cache add ca-certificatesWORKDIR /root/COPY --from=0 /go/src/test/app .CMD ["./app"]
构建与坚持大小
docker build .
docker psREPOSITORY TAG IMAGE ID CREATED SIZEgolang-multi-stage latest bcbbf69a9b59 6 minutes ago 6.7MB
结论
一旦新特性发布成功,可以使用multi-stage
构建将变得非常方便。在未正式发布之前,我们还得老老实实地使用旧的够将模式
原文链接:http://pliutau.com/multi-stage-dockerfile-for-golang-application/?utm_source=golangweekly&utm_medium=email
1 0
- Golang应用的多场景Dockerfile
- Golang 在数据库Replication场景下的应用及GC算法
- Golang:有趣的 channel 应用
- Golang:有趣的 channel 应用
- goLang map 的简单应用
- 多进程和多线程的应用场景
- 多进程和多线程的应用场景
- 多线程和多进程的应用场景
- Paxos的应用场景
- Bloomfilter 的应用场景
- 信号量的应用场景
- memcached的应用场景
- IntentService的应用场景
- ServletConfig的应用场景
- ServletContext的应用场景
- redis---应用的场景
- redis---应用的场景
- Zookeeper的应用场景
- PHP7中php.ini、php-fpm和www.conf 配置
- 二叉树前序、中序、后序遍历相互求法
- struts2_11.2_OGNL(2)
- 结构型模式之桥接模式(Bridge)
- npm install -g n 运行错误
- Golang应用的多场景Dockerfile
- 使用docker compose部署服务【转】
- xajax简单例子,复制运行就明白了
- 理解 Glance
- 【厚积薄发】编程技术总结3—递归函数使用的优缺点详解
- 前端跨域问题遇到的坑及解决方式
- eclipse调试时设置浏览器
- php-fpm报502问题
- Buffer中的flip()