首页 >后端开发 >Golang >为什么 Docker 中的 My Go Web 应用程序失败并显示'standard_init_linux.go:190: exec user process Causes 'no such file or directory””?

为什么 Docker 中的 My Go Web 应用程序失败并显示'standard_init_linux.go:190: exec user process Causes 'no such file or directory””?

Linda Hamilton
Linda Hamilton原创
2024-12-14 22:20:18356浏览

Why Does My Go Web App in Docker Fail with

Docker 映像错误:“standard_init_linux.go:190: 运行 Go Web 应用程序时执行用户进程导致“没有此类文件或目录”

此错误消息表明Docker镜像无法找到或执行指定的用户进程,问题源于缺少依赖项或编译不当。

构建 Go Web 应用程序时,请确保 webapp.go 文件导入必要的包,例如 net 包。另外,net 导入默认包含 libc 作为动态链接的二进制文件。 Docker 镜像中缺失。

要解决此问题,请使用以下编译参数:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go

通过指定 CGO_ENABLED=0,您禁用 CGO(Go 调用 C 函数的机制)并强制纯 Go 编译,从而不需要 GOOS=linux 和 GOARCH=amd64 指示目标平台和体系结构 -a 构建静态链接的二进制文件。 w' 从二进制文件中删除不必要的信息。

使用这些参数重新编译后,构建 Docker 映像并运行它。现在错误应该已解决,并且 Web 应用程序应该在容器内正常运行。

以上是为什么 Docker 中的 My Go Web 应用程序失败并显示'standard_init_linux.go:190: exec user process Causes 'no such file or directory””?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn