回答編集履歴

1

肝心の nocopy: false のデメリットを記載してなかったので追加しました。

2023/02/14 11:40

投稿

mit0223
mit0223

スコア3401

test CHANGED
@@ -1,5 +1,6 @@
1
1
  > しかし、このオプションはdocker環境を動かすために必要なものが不足するだけなのではと思いました。
2
2
  はい、nocopy: false は、ボリュームの内容が空っぽの場合だけイメージのマウント前の内容をコピーするというトリッキーな仕様を知ったうえで使いこなせば便利な機能だと思います。
3
3
  例えば、Java系のアプリケーションサーバみたいにインストールしたディレクトリの中で書き込み( warファイルの解凍、ログの出力)が行われるようなもののディレクトリを永続化したい場合に便利です。イメージのビルド時にインストールしておいて、最初の起動時に内容がコピーされ、その後はそのディレクトリ内で書き込みが行われ永続化されます。
4
+ ただし、この場合イメージのアプリケーションをバージョンアップして再デプロイしてもマウントしたディレクトリの内容は古いままになることに注意が必要です。
4
5
  > 色々なサイトを拝見し、dockerfileの例で nocopy: trueにしているケースがほとんどでしたが、具体的な意味やメリットの説明がありませんでした
5
6
  そのディレクトリが最初は空っぽであるべきものであれば、まちがってイメージに内容物がある場合にそれが参照されてしまうことを防げるので、nocopy:true を使うべきだと思います。データベースのデータを保持するディレクトリで docker-entrypoint.sh でディレクトリが空っぽの場合のみ初期化するような場合には true にしたいでしょう。