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:
1.12.0
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.