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

本文记录了在CentOS上编译Golang项目并构建Docker镜像时遇到的错误:nosuchfileordirectory,并分享了解决方案。通过在编译命令中加入-netgo参数,解决了在Alpine环境下运行时的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天打golang工程的镜像遇到一个问题,就是我在centos的主机上编译golang项目,然后使用Dockerfile构建镜像,用docker运行镜像时,日志一直报如下错误,且一直重启:

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

Dockerfile如下:

FROM alpine:latest
COPY test-latest-linux-amd64 /usr/local/bin/test
RUN echo -e "https://mirrors.ustc.edu.cn/alpine/latest-stable/main\nhttps://mirrors.ustc.edu.cn/alpine/latest-stable/community" > /etc/apk/repositories && \
    apk update &&\
    apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" >  /etc/timezone
ENTRYPOINT ["test"]

Dockerfile没啥问题。编译命令是go build -o test-latest-linux-amd64 main.go

网上一搜,发现centos下编译生成的二进制文件,拿进alpine下运行时有问题的。

编译命令加入如下参数:-tags netgo

go build -tags netgo -o test-latest-linux-amd64 main.go

就可以了
具体原理不明。我建议以后编译golang项目统一在docker 容器中编译。

参考文章
[1]: https://blog.csdn.net/u013042928/article/details/86530033

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值