向上时Docker权限错误

时间:2018-06-06 08:59:27

标签: shell docker go docker-compose dockerfile

我使用以下dockerfilebuild and run go应用程序 应用程序名称为book-store,位于我本地go/src/book-store的{​​{1}}下。

mac

现在我创建了以下docker文件

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

另外我创建了这个docker compose

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 以克服权限问题但未成功...

1 个答案:

答案 0 :(得分:2)

您的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

希望这会有所帮助。