質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

2039閲覧

docker ボリュームマウントについて

shunta80

総合スコア96

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2023/02/12 07:15

実現したいこと

docker-compose.ymlファイルにおける
ボリュームマウントの設定の部分で** nocopy: true**の使い所が知りたい

例えばどんなファイルをdocker内のディレクトリへコピーしないようにすればいいのでしょうか?

前提

ボリュームマウントの設定時に付与できる 「nocopy: true」オプションの使い所がわからない

該当のソースコード

version: "3" services: web: image: nginx:alpine volumes: - type: volume source: mydata target: /data volume: nocopy: true volumes: mydata:

試したこと

nocopy: trueにすることでコンテナからのデータコピーを無効にするということがわかりました。
また、これを設定することでdocker compose up実行時に作られるvolumesの中身が空になることがわかりました。

しかし、このオプションはdocker環境を動かすために必要なものが不足するだけなのではと思いました。
色々なサイトを拝見し、dockerfileの例で nocopy: trueにしているケースがほとんどでしたが、具体的な意味やメリットの説明がありませんでした

例えばこちらのサイトでは使い所がわからないと記載がありました。
https://qiita.com/naokit-dev/items/26b6a542571639e975ee

回答よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

しかし、このオプションはdocker環境を動かすために必要なものが不足するだけなのではと思いました。

はい、nocopy: false は、ボリュームの内容が空っぽの場合だけイメージのマウント前の内容をコピーするというトリッキーな仕様を知ったうえで使いこなせば便利な機能だと思います。
例えば、Java系のアプリケーションサーバみたいにインストールしたディレクトリの中で書き込み( warファイルの解凍、ログの出力)が行われるようなもののディレクトリを永続化したい場合に便利です。イメージのビルド時にインストールしておいて、最初の起動時に内容がコピーされ、その後はそのディレクトリ内で書き込みが行われ永続化されます。
ただし、この場合イメージのアプリケーションをバージョンアップして再デプロイしてもマウントしたディレクトリの内容は古いままになることに注意が必要です。

色々なサイトを拝見し、dockerfileの例で nocopy: trueにしているケースがほとんどでしたが、具体的な意味やメリットの説明がありませんでした

そのディレクトリが最初は空っぽであるべきものであれば、まちがってイメージに内容物がある場合にそれが参照されてしまうことを防げるので、nocopy:true を使うべきだと思います。データベースのデータを保持するディレクトリで docker-entrypoint.sh でディレクトリが空っぽの場合のみ初期化するような場合には true にしたいでしょう。

投稿2023/02/14 11:37

編集2023/02/14 11:40
mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問