运行 Go Web 应用程序时 Docker Image Exec 错误:“没有这样的文件或目录”
最近创建的 Docker 映像遇到错误运行时,显示消息“standard_init_linux.go:190: exec user process Causes “no such file or directory”。此错误会阻止 Go Web 应用程序在 Docker 容器中正常执行。
此错误的根本原因在于缺少文件、缺少解释器的脚本或缺少所需库的可执行文件。在本例中,在 Go 代码中导入“net”包会导致自动包含 libc 作为动态链接的二进制文件。要验证这一点,请在二进制文件上使用“ldd”命令。
要解决此问题,必须提供额外的构建标志:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go
这些标志禁用 CGO(Go 编译器的构建) -支持C),指定目标操作系统和体系结构,并生成静态链接的二进制文件。这确保了所有必要的库都嵌入到可执行文件中,从而消除了对外部依赖项的需要。
通过在 Go 构建过程中合并这些标志,生成的 Docker 映像将包含所需的依赖项,并且错误消息将是已解决,允许 Go Web 应用程序在 Docker 容器中成功执行。
以上是为什么我的 Dockerized Go Web 应用程序失败并显示'没有这样的文件或目录”?的详细内容。更多信息请关注PHP中文网其他相关文章!