Autorisation refusée avec Docker-Compose sous Windows

J’apprends actuellement Docker, avec le livre “Using Docker”. Au chapitre 5, l’auteur passe de l’utilisation de docker run à l’utilisation de docker compose , ce qui génère une erreur de permission denied dans mon application de test. Est-ce que je peux faire quelque chose pour que ça marche?

J’utilise:

  • Windows 10 Home Edition, avec la boîte à outils Docker
  • La version de Docker est 1.12.0
  • La version Docker Compose est 1.8.0 , d988a55

DockerFile :

 FROM python:3.4 RUN groupadd -r uwsgi && useradd -r -g uwsgi uwsgi RUN pip install Flask==0.10.1 uWSGI==2.0.8 WORKDIR /app COPY app /app COPY cmd.sh / EXPOSE 9090 9191 USER uwsgi CMD ["/cmd.sh"] 

docker-compose.yml :

 identidock: build: . ports: - "5000:5000" environment: ENV: DEV volumes: - ./app:/app 

L’application se trouve sous C:/Users/MyUserName , comme requirejs par la Boîte à outils, pour que les volumes partagés fonctionnent correctement.

La commande docker fonctionnelle, qui démarre le conteneur et le serveur Web, l’expose avec succès à mon hôte Windows:

 docker run -e "ENV=DEV" -p 5000:5000 identidock 

La commande docker-compose up échoue avec le message suivant:

 Starting identidock_identidock_1 ERROR: for identidock Cannot start service identidock: oci runtime error: exec: "/cmd.sh": permission denied ←[31mERROR←[0m: Encountered errors while bringing up the project. 

Essayez d’append

 RUN chmod +x /cmd.sh 

à votre Dockerfile après

 COPY cmd.sh / 

Selon ce problème, il semble que le client docker définit l’autorisation d’exécution requirejse pour le fichier alors que docker compose

Il se peut que le client docker définisse le bit exécutable pour tous les fichiers, contrairement à Compose.