2017-09-27 4 views
1

Je cours sudo docker-compose sur mon serveur de production pour démarrer mon conteneur Go. J'ai un accès sudo sur mon serveur de production mais je ne suis pas l'utilisateur root.Obtention de l'autorisation refusée pour/bin/sh pour démarrer Go server in production | docker-compose

erreur:

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

docker-compose.yml

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

Go 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 

Toutes les idées sur la façon de résoudre ce problème?

+0

Vous ne pouvez pas exécuter un répertoire '/'. Qu'est-ce que tu veux faire? – JimB

+0

construire le répertoire go – user3226932

+0

a été d'essayer de suivre ce tutoriel https://medium.com/statuscode/golang-docker-for-development-and-production-ce3ad4e69673 – user3226932

Répondre

1

Vous devez construire votre programme go et ensuite Docker, avec CMD, pour utiliser le binaire résultant comme exécutable par défaut.

Essayez quelque chose comme ceci:.

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