启动容器进程导致“exec:\”/ app \“:权限被拒绝”:未知

当我尝试使用 docker 构建 golang 时


docker的镜像构建成功,但是使用docker run运行时出现如下错误


docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"/app\": permission denied": unknown.

我认为这个错误导致没有添加用户,所以我添加了组和用户,如下所示


RUN groupadd -g 10001 myapp \

    && useradd -u 10001 -g myapp myapp

但没有修复。


这是我的源 docker 文件


FROM golang:1.12.9 as builder


ADD . /go/src/appname/


WORKDIR /go/src/appname/


ENV GO111MODULE=on


COPY go.mod .

COPY go.sum .


RUN go mod download

COPY . .


RUN  CGO_ENABLED=0 GOOS=linux GOARCH=amd64 make build target=prod


FROM alpine


RUN apk update \

  && apk add --no-cache


COPY --from=builder /go/src/ /app


ENTRYPOINT [ "/app" ]


四季花海
浏览 180回答 3
3回答

慕莱坞森

您将在此步骤中将整个源文件夹复制到目录中/app:COPY --from=builder /go/src/ /app然后你尝试执行该目录:ENTRYPOINT [ "/app" ]相反,您需要复制 go build 在复制步骤中输出的已编译二进制文件。

萧十郎

您需要指定二进制文件的输出目录。RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o /app .然后复制app目录COPY --from=builder /app ./RUN chmod +x ./appENTRYPOINT ["./app"]

守候你守候我

感谢大家的建议,我解决了这个问题我不能只是复制正确指定的构建二进制文件前COPY --from=builder /go/src/ /app后COPY --from=builder /go/src/build/build_app_name /app谢谢!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go