gpt4 book ai didi

docker - 将Go Server作为Docker容器运行时权限被拒绝错误

转载 作者:行者123 更新时间:2023-12-01 21:11:00 25 4
gpt4 key购买 nike

我想将Go服务器部署到Google Cloud Run。我从this指南中复制了Dockerfile。

FROM golang:1.13 as builder

WORKDIR /app

COPY go.* ./
RUN go mod download

COPY . ./

RUN CGO_ENABLED=0 GOOS=linux go build -v -o server
RUN chmod a+x server

FROM alpine:3
RUN apk add --no-cache ca-certificates

COPY --from=builder /app/server /server

CMD ["/server"]

在将其部署到Cloud Run之前,我想通过使用 docker build -t server .构建镜像并使用 docker run server运行容器在本地进行测试。

失败并显示以下错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"/server\": permission denied": unknown.

谢谢你的帮助。

最佳答案

潜在问题1

如果将alpine更改为debian对您有用,则意味着这是交叉编译的问题。
golang图像基于debian,并使用glibc,alpine图像使用musl libc。有时这些不兼容,并使其自身暴露于最糟糕的错误消息中。

因此,我怀疑这不是Cloud Run问题,而是之前的问题。为了进行验证,您还可以像在Cloud Run上运行容器一样本地运行https://cloud.google.com/run/docs/testing/local

潜在问题2

一次类似的事情发生在我身上,结果证明我正在构建的软件包不是package main。因此,我没有生成可执行的二进制文件,而是生成了一个目标文件(.o),当然,无论我多么“chmod + x”,它都不会启动。

验证您实际构建的go软件包路径是package main

关于docker - 将Go Server作为Docker容器运行时权限被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60766388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com