私はnignx container
と1つのasset container
私のすべてのアセットを、うなり声または他のツールから構築します。
Dockerの作成ファイルで、asset container's
のフォルダーパスnginx container
したがって、nginxはそのファイルを提供できます。
どうすればそれができますか?覚えていませんが、あるコンテナのパスを別のコンテナと共有できるオプションがあると思います。
Nginxを2コンテナにスケールアップすると、そのマウントはnginxのすべてのインスタンスで機能すると仮定しますか?
私がスケールアップした場合asset container
それから何が起こるのでしょうか?
また、それをホストにマウントして、開発を簡単に行えるようにします。
やりたいことは、ボリュームを使用し、そのボリュームを表示したいコンテナにマウントすることです。
これは、Docker内で完全に実行できます。
以下に例を示します(削除-実際のファイルにはもちろんこれ以上のものが含まれています)。
version: '3'
services:
nginx:
volumes:
- asset-volume:/var/lib/assets
asset:
volumes:
- asset-volume:/var/lib/assets
volumes:
asset-volume:
下部には、「asset-volume」という名前の単一のボリュームが定義されています。
次に、各サービスで、Dockerに特定のパスでそのボリュームをマウントするように指示します。コンテナー内のパスの例を示します。コンテナー内に配置したいパスに調整してください。
ボリュームは、特定のコンテナが所有していない独立したエンティティです。それらのそれぞれにマウントされ、共有されます。 1つのコンテナがコンテンツを変更すると、すべてのコンテナに変更が表示されます。
1つだけが変更できるようにする場合は、ボリューム文字列の末尾に:ro
を追加することで、一部のサービスで常にボリュームを読み取り専用としてマウントできることに注意してください。
services:
servicename:
volumes:
- asset-volume:/var/lib/assets:ro
または、ホスト上のディレクトリを使用して、コンテナにマウントすることもできます。これには、Docker以外のツール(GUIテキストエディターやその他のツールなど)を使用してファイルを直接操作できるという利点があります。
Dockerでボリュームを定義せず、代わりに外部ディレクトリをマウントする以外は同じです。
version: '3'
services:
nginx:
volumes:
- ./assets:/var/lib/assets
asset:
volumes:
- ./assets:/var/lib/assets
この例では、ローカルディレクトリ「assets」が相対パス./assets
を使用して両方のコンテナにマウントされます。
また、異なる開発環境および実稼働環境用にセットアップすることもできます。 docker-compose.ymlにすべてを入れますexceptボリュームマウント。次に、さらに2つのファイルを作成します。
これらのファイルには、ボリュームマウントを定義するための最小限の設定のみを入れます。これをdocker-compose.ymlと組み合わせて、最終的な設定を取得します。
次にこれを使用します。 docker-compose.ymlの設定を使用し、2番目のファイルのすべてをオーバーライド設定または補足設定として使用します。
docker-compose -f docker-compose.yml \
-f docker-compose.dev.yml \
up -d
また、実稼働環境では、devファイルの代わりにprodファイルを使用します。
ここでの考え方は、docker-compose.ymlの設定の大部分を保持し、代替ファイルの違いの最小セットのみを保持することです。
例:
docker-compose.prod.yml
version: '3'
services:
nginx:
volumes:
- asset-volume:/var/lib/assets
docker-compose.dev.yml
version: '3'
services:
nginx:
volumes:
- ./assets:/var/lib/assets