Go 项目使用容器运行时报以下错误:
standard_init_linux.go:207: exec user process caused "no such file or directory"
网上查了一下原因:CGO has to be disabled for alpine.
Dockerfile 中使用的是 golang:1.14-alpine
镜像,Go build 编译参数如下:
GOOS=linux GOARCH=amd64 go build -ldflags "-w -s" -gcflags "-N -l" -mod=vendor -o ./bin/mytest .
显而易见添加 CGO_ENABLED=0
编译之后即可运行成功。CGO_ENABLED
默认是开启的,允许在 Go 代码中调用 C 代码。
go build
编译生产环境下使用的可执行文件一般会加一些优化参数,简单复习一下。