Добавление файла к изображению Docker приводит к ошибке «Отказано в доступе» - PullRequest
0 голосов
/ 24 ноября 2018

Я создаю образ docker golang, но мое приложение golang должно при запуске прочитать config.yaml.Я попытался добавить файл, как показано в файле Docker ниже:

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: Ответ об ошибке от демона: Ошибка создания среды выполнения OCI:container_linux.go: 348: запуск процесса контейнера вызвал "exec: \" / go / bin / app \ ": разрешение отклонено": неизвестно.

Ответы [ 4 ]

0 голосов
/ 13 апреля 2019

Для тех, кто видит аналогичную ошибку при попытке выполнить скрипт оболочки, есть предложение по этой проблеме github .Вы можете проверить, сработает ли это для вас

0 голосов
/ 24 ноября 2018

Проблема в разрешении выполнения app, попробуйте chmod +x перейти в / go / bin / app после копирования.

RUN chmod a+x /go/bin/app 
0 голосов
/ 25 ноября 2018

Как уже отмечали другие, исполняемый файл, похоже, не имеет установленного исполняемого бита.

Поскольку образ 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
...
0 голосов
/ 24 ноября 2018

Думаю, вам придется запустить приведенную ниже команду после копирования файлов

RUN chmod 700 /go/bin/app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...