2016-04-18 14 views
3

ドッキング・コンテナ間の双方向通信を行う方法はありますかAWS BeanstalkAWS Beanstalkのドッキング・コンテナ間の相互通信

私が働くことを試みているスタックはかなり標準的です:ワニス - > Nginx - > PHP-FPM

私はlinks仕様を使用して、nginxがホスト名 "php-app"を見つけるように指定しています。 Nginxはのphp-appホスト名がであることが分かります。しかし、 "php-app"がキャッシュ無効化のためにPURGEリクエストを送信できるように、ホスト名 "ニス"を解決できるようにするには "php-app"も必要です。基本的には

機能するようになりましたこれだけ通信があります:

は[ワニス:80] - > [nginxの:8080] - > [PHP-アプリ]

しかし、これは作業する必要があります。

[narnx:8080] - > [php-app] --- PURGE ---> [ワニス:80]

php-appは基本的にしかし、それは不可能と思われます。

は、私はまた、HOSTからニスコンテナのIPアドレスを得ることができることを知っているが、私はちょうどPHPアプリのコンテナから同じことをやりたい:私もphp-へのリンクを追加しようとした

VARNISH_HASH=`docker ps | grep varnish | sed 's/\|/ /' | awk '{print $1}'` 
VARNISH_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' $VARNISH_HASH` 

"links": [ 
    "varnish" 
] 

マイ関連Dockerrun.aws.json(コンテナdeifinitionファイル)次のようになります:展開するときにアプリのコンテナが、それはエラーが生じたが、私はそれがその後、循環依存があるためだと思う

{ 
    "AWSEBDockerrunVersion": 2, 
    "volumes": [ 
     ..... 
    ], 
    "containerDefinitions": [ 
    { 
     "name": "nginx-proxy", 
     "image": "nginx", 
     "essential": true, 
     "memory": 128, 
     "links": [ 
     "php-app" 
     ], 
     "portMappings": [ 
     { 
      "hostPort": 8080, 
      "containerPort": 8080 
     } 
     ], 
     "environment": [ 
     { 
      "name": "NGINX_PORT", 
      "value": "8080" 
     } 
     ], 
     "mountPoints": [ .... ] 
    }, 
    { 
     "name": "varnish", 
     "hostname": "varnish", 
     "image": "newsdev/varnish:4.1.0", 
     "essential": true, 
     "memory": 128, 
     "portMappings": [ 
     { 
      "hostPort": 80, 
      "containerPort": 80 
     } 
     ], 
     "links": [ 
     "nginx-proxy", 
     "php-app" 
     ], 
     "mountPoints": [ .... ] 
    }, 
    { 
     "name": "php-app", 
     "image": "peec/magento2-php-fpm-aws", 
     "essential": true, 
     "memory": 1024, 
     "environment": [ 
     ], 
     "mountPoints": [ .... ] 
    } 
    ] 
} 
+0

あなたは答えを見つけましたか?同様のことを探していますが、同じインスタンスのマルチコンテナドッカーでは、「リンク」パラメータを使用する必要はありません。解決策は何でしたか? –

答えて

0

簡単に言えば、他の人から1つのコンテナにアクセスする必要があります。あなたはネットワークのエイリアスを使うだけです。ドッカーのネットワーク設定は表示されませんが、画像に「デフォルト」のネットワークが使用されている場合は表示されます。

varnish: 
    image: newsdev/varnish:4.1.0, 
    networks: 
     default: 
     aliases: 
      - "varnish.local" 

"varnish.local"を任意の有効なホスト名に変更できます。 「デフォルト」ネットワーク上の他の容器から、このコンテナはping varnish.local

のために利用できるようになりますあなたは、ここで詳細を読むことができます:https://docs.docker.com/compose/compose-file/#aliases

関連する問題