Ошибка разрешения Docker во время работы - PullRequest
0 голосов
/ 06 июня 2018

Я использую следующее dockerfile - build and run приложение, имя приложения book-store и оно находится под go/src/book-store в моем локальном mac.

go
-src
--book-store
--main.go

Теперь ясоздайте следующий файл докера

FROM golang:1.9.6-alpine

RUN apk update && apk upgrade && apk add --no-cache bash git

RUN go get github.com/gin-gonic/gin


ENV SOURCES /go/src/book-store
COPY . ${SOURCES}


RUN cd ${SOURCES} && CGO_ENABLED=0 go build

RUN chmod +x /go/src/book-store

WORKDIR ${SOURCES}
CMD ${SOURCES}
EXPOSE 8080

. Кроме того, я создал этот докер. Составьте

version: '2'
services: 
  book-store-web:
    build: .
    image: book-store:1.0.1
    environment: 
    - PORT=8080
    ports: 
    - "8080:8080"

Теперь я использую

docker-compose build

который успешно создал образ, и теперь я хочу запустить образ с docker-compose up

И я получил следующую ошибку:

Creating book-store_book-store-web_1 ... done
Attaching to book-store_book-store-web_1
book-store-web_1  | /bin/sh: /go/src/book-store: Permission denied
book-store_book-store-web_1 exited with code 126

Есть идеи, что здесь может быть не так?

Я добавил RUN chmod +x /go/src/book-store, чтобы решить проблему с разрешением без успеха ...

1 Ответ

0 голосов
/ 06 июня 2018

Ваша строка cmd неверна, она должна выглядеть следующим образом:

CMD ${SOURCES}/book-store

вы пытаетесь выполнить каталог

Также как только этот контейнер работает как root, вы должны действительно сделатьон запускается как созданный вами пользователь, у которого нет прав доступа root.

Это можно сделать с помощью Dockerfile, который выглядит примерно так:

FROM golang:1.9.6-alpine

RUN apk update && apk upgrade && apk add --no-cache bash git

RUN go get github.com/gin-gonic/gin

ENV SOURCES /go/src/book-store
COPY . ${SOURCES}

RUN addgroup goapi && \
  adduser -D -S -G goapi goapi && \
  cd ${SOURCES} && \
  CGO_ENABLED=0 go build && \
  chmod +x /go/src/book-store && \
  chown -R goapi:goapi /go

USER goapi

WORKDIR ${SOURCES}
CMD ${SOURCES}/book-store
EXPOSE 8080

надеюсь, это поможет.

...