这个 Dockerfile 文件中使用了 Golang 的编译器进行构建,最终生成的是一个可执行文件 blog_web,而不是镜像。Docker 镜像本质上是一个包含了程序、库和其他依赖项的虚拟环境,因此需要将可执行文件以及相关的配置文件等打包到镜像中。
在该 Dockerfile 中,先基于 golang:alpine 镜像创建一个名为 builder 的阶段,并设置 CGO_ENABLED、GOOS、GOPROXY 等环境变量,然后将当前目录下所有内容都复制到 /build 目录下。接着进入 /build/golang_web 目录,下载依赖并编译成 blog_web 可执行文件。
在第二个 FROM 语句中再次创建一个新的阶段 alpine,并设置 MAINTAINER、TZ 等环境变量。然后将之前编译得到的 blog_web 和配置文件 application.yaml 复制到容器内部的 /app 目录下,并暴露 8080 端口。最后通过 CMD 命令运行 blog_web 可执行文件。
因此,在这个 Dockerfile 中生成的并不是 exe 文件,而是针对 Alpine Linux 操作系统编译好的可执行文件 blog_web。