エントリポイントスクリプトで+ xをchmodする必要がある理由はありますか? Redisがエントリポイントスクリプトのdockerfile( https://github.com/docker-library/redis/blob/109323988b7663bceaf4a01c3353f8934dfc002e/2.8/Dockerfile )でこれを行っているようには見えませんでした。
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"]
スクリプトには既にexecフラグがあるため、redisで実行する必要はありません。
~/redis/2.8$ ls -l docker-entrypoint.sh
-rwxrwxr-x 1 igor igor 109 Dec 3 23:52 docker-entrypoint.sh
docker-node-entrypoint.shスクリプトに対してこれを行う場合、Dockerfileのchmodも必要ありません。
これは、git core.fileModeオプションがデフォルトでtrueであり、ファイルの実行可能ビットが受け入れられるために可能です。
Dockerは、ソースの権限でファイルをコンテナにコピーします。コードリポジトリへのプッシュチェーンのどこか、またはビルドホストでLinux実行可能ファイルを削除した場合、それらの実行権限を追加し直す必要があります。 Linuxの許可ビットをサポートしていないファイルシステムにコードをダウンロードしているWindowsユーザーから最も頻繁に報告されるこの問題を見てきました。 COPY --chmod
すぐに追加のレイヤーの必要性を排除するソリューション 。