2つの異なる環境を定義する同じホストに2つのインスタンスを生成する必要があるアプリケーションがあります。アプリケーションの複数のインスタンス
アプリケーションドッキングウィンドウ-compose.yml
version: '2'
services:
db:
image: postgres
web:
image: nginx
depends_on:
- db
networks:
default:
external:
name: my_reverse_proxy_network
あなたは私が私のリバースプロキシはそれらと通信できるネットワークを使用している見ることができるように。
が今のインスタンスを実行することができます:
$ docker-compose -p proj1 up -d
Creating proj1_db_1
Creating proj1_web_1
$ docker-compose -p proj2 -f docker-compose.yml -f proj2-overrides.yml up -d
Creating proj2_db_1
Creating proj2_web_1
proj2-overrides.ymlはproj2環境を設定するには、いくつかの特定のenv変数が含まれています。
$ docker ps
CONTAINER ID ... NAMES
23a13acd4ffc ... proj2_web_1
dbeea953f805 ... proj2_db_1
df376b9ee400 ... proj1_web_1
bf246e503fc6 ... proj1_db_1
a06064cb0660 ... my_reverse_proxy
$ docker inspect -f '...{{.IPAddress}}...' bf246e503fc6
172.21.0.3
$ docker exec -ti proj1_web_1 ping db
PING db (172.21.0.5): 56 data bytes
64 bytes from 172.21.0.5: icmp_seq=0 ttl=64 time=0.079 ms
proj1_web_1
がproj2_db_1
にリンクされているマイ:
version: '2'
services:
web:
environment:
HOST: proj2.myapp.net
そしてここでは私の問題です。
Dockerが最初に利用可能なdbコンテナかそのようなものを取っているからだと思います。
1つのプロジェクトが他の1つのコンテナにリンクされないようにするにはどうすればよいですか?
(...しかし、まだ私のリバースプロキシと通信することができること)
をファイルを作成し、セットアップ全体を1つのファイルに入れないでください。 – hecko84
あなたは 'proj2-overrides.yml'について話していますか?このファイルは 'docker-compose.yml'の拡張です。そのため、私はproj2の両方を読み込んでいます。これには、proj2の特定の設定、つまり環境変数のみが含まれています。 –
いいえ、私が意味していたのは、両方のdocker-compose.ymlとproj2-overrides.ymlが必要で、なぜなら両方のインスタンスが同じドッカーホスト上で実行されているように、とにかくenv変数はサービスによって定義できるので、現在私はそこでの必要性を見ていません。つまり、同じ構成にproj2_web_1、proj1_web_1のコンテナを置くことができます。一般的に私はちょうど質問が正しくないと思う。 – hecko84