まとめ
- COPY で
--chown
フラグをつけることで、コンテナ内にコピーされたファイル・ディレクトリのオーナーを指定できる。 - メリットとして、Docker ビルド時の レイヤーを 1 つ減らせる。また、
RUN chwon
した時に時間が掛かっていたが、--chown
フラグ付きの COPY の方が時間がかからなかった。
具体的な書き方例
$ git diff
diff --git a/Dockerfile b/Dockerfile
index 26f08fb..99043e4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -19,5 +19,4 @@ ENV APACHE_DOCUMENT_ROOT /var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
-COPY . .
-RUN chown -R www-data:www-data /var/www/html/
+COPY --chown=www-data:www-data . .
おわりに
で知ることができました。ありがとうございます!
公式のドキュメントにも記述がございました。
注意点として、 --chown
フラグは Linux コンテナのみをサポートし、 Windows コンテナはサポートしない、ということが記述されていました。
まだ検証していませんけれども、 Windows 上のファイルを --chown
フラグ付きで COPY した時は望む結果が得られないのかもしれません。
以上です。