启动容器进程导致"exec: " /app\ ": permission denied":未知



当我尝试使用 docker 构建 golang 时

docker 的映像构建成功,但在使用 docker 运行时发生以下错误

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

但没有修复。

这是我的源码头工人文件

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" ]

谢谢

您将整个源文件夹复制到目录中,/app此步骤中:

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

然后尝试执行该目录:

ENTRYPOINT [ "/app" ]

相反,您需要复制 go 构建在复制步骤中输出的已编译二进制文件。

您需要为二进制文件指定输出目录。


RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o /app .

然后拷贝应用目录

COPY --from=builder /app ./
RUN chmod +x ./app
ENTRYPOINT ["./app"]

感谢大家的建议,我解决了这个问题

我不能只是使用正确指定的构建二进制文件进行复制

以前

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

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

谢谢!!

相关内容

  • 没有找到相关文章

最新更新