はじめに
Dockerコンテナの起動時に実行したいシェルスクリプトファイル(.sh)をGitリポジトリに上げて、それをクローンした開発者が実行すると権限の問題で実行できないということがありました。
よく考えたら当然のことなのですが、今までこのような経験がなかったのでメモに残します。
.shファイルの権限
言うまでもありませんが、リポジトリをクローンした開発者には.shファイルの実行権限がないため、Dockerコンテナの起動時にエラーとなります。
そのため、Gitリポジトリ上にファイルを追加する際は.shファイルの権限を明示的に付与してあげないといけません。
実現する方法としては下記の2種類があります。
git update-index --chmod=+x path/to/file
git add --chmod=+x path/to/file
通常 git add
したファイルは GitHubのInternal Storage上で10644
で管理されているが、上記のコマンドを実行すると10755
で登録されます。
上記の登録状況は git ls-files --stage
コマンドで確認することが可能です。
$ git ls-files --stage
100644 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 0 README.md
100755 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 0 sample.sh
参考資料