2016-12-06 15 views
0

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_1proj2_db_1にリンクされているマイ:

version: '2' 
services: 
    web: 
    environment: 
     HOST: proj2.myapp.net 

そしてここでは私の問題です。

Dockerが最初に利用可能なdbコンテナかそのようなものを取っているからだと思います。

1つのプロジェクトが他の1つのコンテナにリンクされないようにするにはどうすればよいですか?

(...しかし、まだ私のリバースプロキシと通信することができること)

+0

をファイルを作成し、セットアップ全体を1つのファイルに入れないでください。 – hecko84

+0

あなたは 'proj2-overrides.yml'について話していますか?このファイルは 'docker-compose.yml'の拡張です。そのため、私はproj2の両方を読み込んでいます。これには、proj2の特定の設定、つまり環境変数のみが含まれています。 –

+0

いいえ、私が意味していたのは、両方のdocker-compose.ymlとproj2-overrides.ymlが必要で、なぜなら両方のインスタンスが同じドッカーホスト上で実行されているように、とにかくenv変数はサービスによって定義できるので、現在私はそこでの必要性を見ていません。つまり、同じ構成にproj2_web_1、proj1_web_1のコンテナを置くことができます。一般的に私はちょうど質問が正しくないと思う。 – hecko84

答えて

1

問題は、あなたのDBは、他のすべてと同じリバースプロキシネットワーク上にあるということです。 Webサーバがに話すだけで、プロキシのための独立したネットワークを作成し、他のすべてのコンテナは、自分たちの中で内部的に話をするためにドッキングウィンドウ-COMPOSEは、デフォルトのネットワークを作成してみましょう:あなたは2を持ちたい理由があるの

version: '2' 
services: 
    db: 
    image: postgres 
    web: 
    image: nginx 
    depends_on: 
     - db 
    networks: 
     - default 
     - proxy 

networks: 
    proxy: 
    external: 
     name: my_reverse_proxy_network 
+0

私はそれを試みたと私のリバースプロキシが通信することができません私のWebサービスで。なぜか分からない。 –

+0

Webサービスとリバースプロキシネットワークを調べると、これをデバッグするのに役立ちます。 – BMitch

+1

それは働いていた、私はリバースプロキシ(この場合、[Traefik](https://traefik.io/))に設定がありませんでした –

関連する問題