Dockerfile COPY の `–chown` フラグが便利

まとめ

  • 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 した時は望む結果が得られないのかもしれません。

以上です。

コメントを残す

コメントを残す