栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

记一次docker打包golang程序的报错修复

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次docker打包golang程序的报错修复

首先是错误代码:

standard_init_linux.go:228: exec user process caused: no such file or directory

打包的镜像并不复杂,采用的是alpine镜像作为底包,将在Ubuntu下编译好的go程序COPY进入镜像,然后执行程序。

go程序使用了Gin,requests等库

将程序打包好后使用docker run 报错且镜像直接退出即使加上-it等参数依然无法进入镜像。


解决方法:

经过查阅资料后得知,golang在编译时可以选择使用C链接库(引用的C链接库不打包进程序)或者纯Go编译(打包所有用到的内容)

而我使用的Go版本恰好又是默认使用C链接库也就是CGO方式编译的

在容器的底包alpine镜像中没有go程序依赖的C链接库,所以会报错找不到文件。

因此,只需要将CGO模式关掉让程序能够脱离环境独立运行即可。

有教程说在go build 时加上-tags netgo即可,不过我试了下不知道为什么没效果。

所以直接采用设置env的方式

go env -w CGO_ENABLED=0

设置好环境变量后重新编译打包docker镜像即可。

参考的大佬文章:

https://blog.csdn.net/u013235478/article/details/105852353

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/903465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号