2017-10-19 7 views
2

Je crée un Dockerfile pour implémenter un serveur. Je croyais que mon fichier était complet, mais en l'implémentant, une erreur est retournée;Dockerfile qui ne fonctionnera pas

/docker-entrypoint.sh: line 22: /opt/author/application/bin/start-ppliance.sh: Permission denied 
/docker-entrypoint.sh: line 22: exec: /opt/author/application/bin/start-appliance.sh: cannot execute: Permission denied 

Dans le Dockerfile lui-même, je cours ce qui suit;

RUN chmod -R 0750 /opt/author/ 
RUN chown -R USER1:USER1 /opt/author/ 

De même que;

USER USER1 

Dans le Dockerfile lui-même, la dernière ligne est;

CMD ["/opt/author/application/bin/start-appliance.sh", "run"] 

Je ne comprends pas pourquoi cette erreur se produit, que le fichier est à l'intérieur du conteneur et appartient à l'utilisateur par défaut.

+0

Utilisez le bouton '{}' de l'éditeur (avec un bloc sélectionné) ou des retraits à quatre espaces pour mettre en forme des blocs multi-lignes au format de code. –

+2

Pourriez-vous publier l'intégralité du fichier Dockerfile? – MatTheWhale

+1

Pour le débogage, ajouter quelques commandes RUN avec un 'ls -al/opt/auteur/application/bin /', 'echo $ (whoami)' pourrait également aider à comprendre ce qui se passe –

Répondre

1

Comme vous le savez déjà, cela se produit généralement lorsque votre fichier n'a pas le bit d'exécution défini, bien que votre chmod 750 devrait, en théorie, gérer cela. Une façon de déboguer si c'est réellement le problème serait simplement de passer un CMD différent à docker run (par exemple docker run -it <image> sh) et de vérifier les permissions du script avec ls -l. Plus souvent qu'autrement, ne pas avoir l'ensemble des bits d'exécution est le coupable.

Si ce n'est pas le cas, je vous recommande de clarifier la question avec le Dockerfile complet au cas où quelque chose comme une directive VOLUME peut être en train d'annuler les effets du RUN que vous utilisez.

+0

Quand j'entre le conteneur \ w docker Exécuter -u nom_du_ conteneur -ti --entrer le point sh repo/conteneur: ve.rs.io.n et examiner le fichier d'exploitation dont le bit x est défini. La section de mise en œuvre du Dockerfile est la suivante: – Kyle