代码之家  ›  专栏  ›  技术社区  ›  jjuser19jj

将文件添加到docker映像会导致“权限被拒绝”错误

  •  0
  • jjuser19jj  · 技术社区  · 6 年前

    我正在创建docker golang映像,但我的golang应用程序需要在开始时读取config.yaml。我试图添加文件,如下所示:

    FROM golang:alpine as builder
    # Install git + SSL ca certificates
    RUN apk update && apk add git && apk add ca-certificates
    # Create appuser
    COPY . $GOPATH/src/github.com/user/app/
    WORKDIR $GOPATH/src/github.com/user/app/
    #get dependancies
    RUN go get -d -v
    #build the binary
    RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /go/bin/app
    # STEP 2 build a small image
    # start from scratch
    FROM scratch
    COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
    ADD ./config.yaml /go/bin/app/
    # Copy our static executable
    COPY --from=builder /go/bin/app /go/bin/app
    EXPOSE 3000
    ENTRYPOINT ["/go/bin/app"]
    

    但我得到了以下错误:

    docker:daemon的错误响应:OCI runtime create failed:container\u linux.go:348:启动容器进程导致“exec:\”/go/bin/app\“:权限被拒绝”:未知。

    3 回复  |  直到 6 年前
        1
  •  2
  •   unnik    6 年前

    我认为在复制文件之后,您必须运行下面的命令

    RUN chmod 700 /go/bin/app
    
        2
  •  2
  •   Seaskyways    6 年前

    问题在于 app ,尝试 chmod +x

    RUN chmod a+x /go/bin/app 
    
        3
  •  1
  •   Uku Loskit    6 年前

    正如其他人指出的,可执行文件似乎没有设置可执行位。

    自从 scratch

    ...
    RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /go/bin/app
    RUN chmod +x /go/bin/app
    # STEP 2 build a small image
    ...
    
        4
  •  0
  •   Ikechukwu Kalu    6 年前

    对于在尝试执行shell脚本时看到类似错误的人,有一个建议是 github issue

    推荐文章