通过以上的案例,我们得出2个方案:
1:编译一个带go环境的容器,直接执行go程序,或者进容器编译即可
2:先编译成二进制,然后把二进制文件放到一个最小的镜像中执行
很明显,第二种方案适合直接运行二进制的场景...,可以使用最少的资源去执行,那么如何实现docker自动化执行呢?...我们可以先定义一个带有golang环境的容器,在编译好之后放到最小的镜像去执行
docker手动多阶段构建
定义编译成二进制的dockerfile,命名为Dockerfile.build:
FROM golang...自己手动运行
运行脚本后输出:
docker多阶段构建
在docker的新版本中,直接支持了在dockerfile中多阶段构建:
创建一个新的Dockerfile.new文件:
FROM golang...文件,即可完成构建命令,并且不需要新的shell命令去删除构建的临时文件,构建和启动命令:
docker build -t cnych/docker-multi-stage-demo:latest -