为了账号安全,请及时绑定邮箱和手机立即绑定

Golang docker 多阶段构建运行失败:

Golang docker 多阶段构建运行失败:

Go
FFIVE 2023-06-05 13:25:31
使用 Docker 多阶段构建部署简单 API 时,会抛出以下错误:$ docker build -t api:latest .[...]$ docker run -p 4880:4880 --rm --name=api api:latest2019/01/29 23:02:15 exec: "go": executable file not found in $PATH由于我的应用程序没有go从任何地方(或任何地方exec.Command)调用我运行了一个go mod vendor所以我可以检查依赖源代码并找到以下内容:vendor/github.com/lib/pq/oid/gen.go12:     "os/exec"64:     cmd := exec.Command("gofmt")这可能是问题所在吗?如果是,我该如何解决?我确信我之前已经成功地部署了github.com/lib/pq多阶段构建,但我目前被卡住了。非常感谢,Happy Hacking。文件FROM golang:1-alpine AS builderENV GO111MODULE=onRUN apk --no-cache add ca-certificates gitWORKDIR /app# Copy go module info first...COPY go.mod .COPY go.sum .# ...then download to cache dependencies between buildsRUN go mod downloadCOPY . .RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -installsuffix cgo -ldflags '-extldflags "-static"' -o api cmd/api/FROM scratchWORKDIR /appCOPY --from=builder /app/api /app/COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/EXPOSE 8080ENTRYPOINT ["./api"]
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您的实际构建线:

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -installsuffix cgo -ldflags '-extldflags "-static"' -o api cmd/api/

前面缺少相对路径cmd,将其设为 be./cmd/api将导致构建/运行成功。cmd/api显然是真实的,所以它没有犯错,但也没有做你期望它做的事情。如果您go run cmd/api在终端中输入,您应该会看到大量与您的应用程序无关的输出。


查看完整回答
反对 回复 2023-06-05
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信