在本地环境编译,然后将可执行程序放入 alpine(docker.io/alpine:latest),1.准备web程序,2.dockerfile,3.构建镜像,4.将在本地生成将demo/go-hello:1.o镜像,
,5.创建并运行容器,
,原因:编译的hello二进制程序不是存静态程序,还依赖一些库,但这些库在alpine镜像中找不到。,需要放入alpine镜像里运行的go程序,可以直接使用golang:alpine来编译,但我们在golang:alpine基础上再构建一个镜像,这个镜像中包含bash、GO111MODULE、GOPROXY等环境变量。,1.dockerfile,2.构建自己的go编译镜像,
,3.运行go-build:1.0 镜像,编译go项目代码:,生成了hello可执行文件,且为纯静态的。,
,将编译得到的hello二进制打入alpine:latest,dockerfile2,5.打包,6.运行demo/go-hello:1.0,
,scratch为空镜像,适合那些没有任何外部依赖的程序,刚好前面的hello程序没有任何依赖!,1.dockerfile3,2.构建,3.以scratch为基础构建出来的镜像是最小的,
,运行,
,目录结构,
,dockerfile