概括
apt install gccgo-go
不会ggcgo
在 Docker 映像构建中安装,但从映像容器运行时会安装。
细节
我有一个 Ubuntu 20.04 Docker 映像,用于测试我编写的一些简单 Go 应用程序。当我在构建映像时使用apt install
和golang-go
包时,构建完成且没有错误。但是,当我启动并连接到容器并尝试使用构建我的 Go 应用程序时,我收到未找到的错误。当我尝试时,它没有返回任何内容,即未安装可执行文件。当我从容器内运行时,安装完成,我可以使用可执行文件成功构建和运行应用程序。gccgo-go
go build -compiler gccgo
gccgo
which gccgo
gccgo
apt install -y gccgo-go
gccgo
环境
我的项目可用这里在 GitHub 上。Dockerfile 是这里Go 源代码树开始这里我在 macOS 11.3.1 上运行 Docker Desktop 3.3.1,并使用以下顺序构建 Ubuntu 映像并附加到容器:
docker system prune -a
docker compose build
docker compose up -d
docker compose exec ubuntu bash
其他说明
在为这个问题收集数据时,我在构建 Docker 镜像时意外安装了包gccgo
而不是。这实际上ggcgo-go
做过当我启动容器时,安装gccgo
映像中的可执行文件是可用的。它甚至设法“构建”了go/sieve
,但这是一个实用程序包,因此它只是验证包是否可构建。当我尝试构建时go/app2
,编译器失败了,因为它需要 go v1.16(安装的 gogolang-go
是 1.13)。显然,应该只与需要的“gccgo-go gccgo golang gccgo”golang-go
配对。, not
. also found a
package but that is also v1.3, not the v1.6 that
结语
再次总结一下,它apt install gccgo-go
在图像构建中不起作用,但在图像容器中起作用。
我不知道这里是否是提出这个问题的合适地方,但这似乎是一个好的开始。提前感谢您能给我的任何帮助。