2017-09-27 64 views
1

我在生產服務器上運行sudo docker-compose以啓動我的Go容器。我在生產服務器上有sudo訪問權限,但不是root用戶。獲取權限拒絕/ bin/sh啓動生產中的Go服務器| docker-compose

錯誤:

go_1  | /bin/sh: ./: Permission denied 

泊塢窗,compose.yml

go: 
    build: 
     context: ./api 
     args: 
     app_env: ${APP_ENV} 
    volumes: 
     - ./api:/go/src/myproject/api 
    expose: 
     - "8080" 

轉到Dockerfile

From golang:1.8.3-alpine3.6 

RUN apk update && \ 
    apk add \ 
     bash \ 
     build-base \ 
     curl \ 
     make \ 
     git \ 
     && rm -rf /var/cache/apk/* 

ARG app_env 
ENV APP_ENV $app_env 

COPY . /go/src/myproject/api 
WORKDIR /go/src/myproject/api 


CMD if [ ${APP_ENV} = prod ]; \ 
    then \ 
    ./; \ 
    else \ 
    go get github.com/pilu/fresh && \ 
    fresh; \ 
    fi 


EXPOSE 8080 

關於如何解決這個任何想法?

+0

不能執行目錄'/'。你想要做什麼? – JimB

+0

建立旅途目錄 – user3226932

+0

是想爲什麼你會認爲'./按照本教程https://medium.com/statuscode/golang-docker-for-development-and-production-ce3ad4e69673 – user3226932

回答

1

您需要構建您的go程序,然後告訴Docker,使用CMD將生成的二進制文件用作默認可執行文件。

嘗試這樣:

From golang:1.8.3-alpine3.6 

RUN apk update && \ 
    apk add \ 
     bash \ 
     build-base \ 
     curl \ 
     make \ 
     git \ 
     && rm -rf /var/cache/apk/* 

ARG app_env 
ENV APP_ENV $app_env 

COPY . /go/src/myproject/api 
WORKDIR /go/src/myproject/api 

RUN go get ./ 
RUN go build 

CMD if [ ${APP_ENV} = prod ]; \ 
    then \ 
    api; \ 
    else \ 
    go get github.com/pilu/fresh && \ 
    fresh; \ 
    fi 


EXPOSE 8080 
相關問題