Docker-compose synthaxのv2を使用すると、次のようなことができました。
version: '2'
services:
app:
image: tianon/true
volumes:
- ../app:/var/www/app
nginx:
image: nginx
volumes_from:
- app
php:
image: php
volumes_from:
- app
V3.2では、volumes_from
はinvalid option
になりました。ドキュメントはすべて、all the ways better
である新しいトップレベルボリュームsynthaxを使用するためのものです。私はgithubに関するいくつかのコメントを読みました、そして人々が提案する唯一の解決策は
version: '3.2'
services:
nginx:
image: nginx
volumes:
- app:/var/www/app
php:
image: php
volumes:
- app:/var/www/app
volumes:
app:
driver_opts:
type: none
device: ../app
o: bind
これは明らかに悪化しているように見えますが、私にとってはうまくいきません。エラーが発生します:no such file or directory
。では、他に何を試すべきですか?トップレベルのボリュームの代わりにlinks
を使用できるようですが、ドキュメントではレガシーオプションと見なされています。では、新しい構文でそれを正しく行う方法は?
編集:質問は重複の可能性があると特定されましたが、同意しません。説明については、以下の私のコメントを参照してください。
トピックのスターターがすでに述べたように、volumes_from
は新しいdocker-compose
構文から削除され、 ドキュメント に従って、最上位キーvolumes
。ドキュメントには、 ボリューム と バインドマウント の違いも記載されています。そのうちの1つは、コンテンツの管理者です。
対照的に、ボリュームを使用すると、ホストマシン上のDockerのストレージディレクトリ内に新しいディレクトリが作成され、Dockerがそのディレクトリの内容を管理します。
この場合、ホストフォルダーをボリュームにバインドマウントし、ホストのファイルシステムとDockerによって同時に制御されるようにすることは意味がありません。
それでも同じフォルダーを2つ以上のコンテナーにバインドマウントする場合は、次のようにしてみてください。
version: '3.2'
services:
nginx:
image: nginx
volumes:
- type: bind
source: ../app
target: /var/www/app
php:
image: php
volumes:
- type: bind
source: ../app
target: /var/www/app