【发布时间】:2020-07-01 03:09:47
【问题描述】:
我想将我的 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.
感谢您的帮助。
【问题讨论】:
-
您在服务器内部使用哪个端口?如果是特权端口(bind。
-
为什么你的 Dockerfile 中没有
EXPOSE <PORT>行? Google Cloud Run 不需要这个吗? -
端口定义为 .env 文件。我也想知道缺少的“EXPOSE”命令,但他们的示例中也缺少它。
-
您的主机操作系统是什么?我从您发布的链接中尝试了 helloworld 应用程序,并且在本地没有问题。我在 Fedora 31 上。
-
启动容器时出现问题。建筑图像应该是相同的。似乎权限有问题。复制文件后尝试移动
RUN chmod a+x server行(但不要忘记/)。
标签: docker go google-cloud-platform google-cloud-run