登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-06 16:00:28 105浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《容器进程启动错误:“exec:\”/ app \“:权限被拒绝”:未知》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

当我尝试使用 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" ]

谢谢


解决方案


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

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

然后你尝试执行该目录:

entrypoint [ "/app" ]

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

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

run cgo_enabled=0 goos=linux goarch=amd64 go build -a -o /app .

然后复制应用程序目录

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

理论要掌握,实操不能落!以上关于《容器进程启动错误:“exec:\”/ app \“:权限被拒绝”:未知》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>