web-dev-qa-db-fra.com

Fichier Docker: Chmod sur Entrypoint Script

Y a-t-il une raison pour laquelle j'ai besoin de chmod + x sur mon script de point d'entrée? Il ne semblait pas que Redis faisait cela dans leur dockerfile ( https://github.com/docker-library/redis/blob/109323988b7663bceaf4a01c3353f8934dfc002e/2.8/Dockerfile ) pour leur script de point d'entrée.

Dockerfile:

# Generic Docker Image for Running Node app from Git Repository
FROM    node:0.10.33-slim
ENV NODE_ENV production

# Add script to pull Node app from Git and run the app
COPY docker-node-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE  8080
CMD ["--help"]
16
AnDev123

redis n'a pas besoin de le faire car leur script a déjà le drapeau exec:

~/redis/2.8$ ls -l docker-entrypoint.sh 
-rwxrwxr-x 1 igor igor 109 Dec  3 23:52 docker-entrypoint.sh

si vous le faites pour votre script docker-node-entrypoint.sh, vous n'auriez pas besoin de chmod dans Dockerfile aussi.

Ceci est possible car l'option git core.fileMode par défaut est vraie, donc le bit exécutable d'un fichier est honoré.

13
ISanych

Docker copiera les fichiers dans le conteneur avec les autorisations de leur source. Si vous supprimez les bits exécutables Linux quelque part dans la chaîne de poussée vers votre dépôt de code, ou sur votre hôte de génération, vous devrez ajouter à nouveau ces autorisations d'exécution. J'ai vu ce problème le plus souvent signalé par les utilisateurs de Windows, qui téléchargent du code vers un système de fichiers qui ne prend pas en charge les bits d'autorisation Linux. J'espère que nous aurons un COPY --chmod bientôt une solution qui éliminera le besoin d'une couche supplémentaire .

4
BMitch