web-dev-qa-db-ja.com

Dockerファイル:エントリポイントスクリプトのChmod

エントリポイントスクリプトで+ 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"]
16
AnDev123

スクリプトには既に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であり、ファイルの実行可能ビットが受け入れられるために可能です。

13
ISanych

Dockerは、ソースの権限でファイルをコンテナにコピーします。コードリポジトリへのプッシュチェーンのどこか、またはビルドホストでLinux実行可能ファイルを削除した場合、それらの実行権限を追加し直す必要があります。 Linuxの許可ビットをサポートしていないファイルシステムにコードをダウンロードしているWindowsユーザーから最も頻繁に報告されるこの問題を見てきました。 COPY --chmodすぐに追加のレイヤーの必要性を排除するソリューション

4
BMitch