2017-10-18 3 views
0

Microsoft/aspnetcoreベースイメージから構築された2つのドッキングコンテナ(Windows 10ホスト上のlinuxコンテナ)があります。両方のコンテナは個別に起動すると正常に動作します。両方のコンテナを起動するためにDocker Composeを使用しようとしています(一方はIdentityServer4を使用するアイデンティティプロバイダで、もう一方はIdentity Serverによって保護されたapiリソースです)。Http Dockerコンテナと2つのドッキングコンテナ間の通信

version: '3' 

services: 
    identityserver: 
    image: eventloom/identityserver 
    build: 
     context: ../Eventloom.Web.IdentityProvider/Eventloom.Web.IdentityProvider 
     dockerfile: DockerFile  
    ports: 
     - 8888:80 
    eventsite: 
    image: eventloom/eventsite 
    build: 
     context: ./Eventloom.Web.Eventsite 
     dockerfile: Dockerfile 
    ports: 
     - 8080:80 
    links: 
     - identityserver 
    depends_on: 
     - identityserver 
    environment: 
     IdentityServer: "http://identityserver" 

「eventsite」コンテナの起動クラスが「identityserver」の発見エンドポイントをpingするIdentityModelを使用しています。私は、次のドッキングウィンドウ-compose.ymlファイルを持っています。何らかの理由で、イベントサイトコンテナにログインして、identityserverからping応答を得ることはできますが、スタートアップは検出情報を正常に取得できませんでした。イベントサイトがポート80を介してidentityserverと通信できるようにするために何か必要なことはありますか?

+0

エラーログを表示できますか? –

+1

私はあなたがドッカー作成ファイルでdepends_onとリンクを使用しているのを見ることができます。それらのうちの1つだけを使用する必要があります(同じことを行います)。異なるコンテナを相互に通信させるために、設定ファイルでサービス名を使用していることを確認してください。 – sys0dm1n

+1

リンクを使用しないでください(廃止予定)。最新のバージョンのdocker-composeを使用すると、コンテナはデフォルトで自動的にネットワーク化されます。たとえば、eventsiteコンテナ内のホスト名「identityserver」でidentityserverにアクセスできます。サービス名を任意のホスト名に変更します。 – mkasberg

答えて

0

HTTP通信が正常に動作していて、内部DNSを正しく使用していることが判明しました。問題は、私のIdentityModel.DiscoveryClientオブジェクトであり、HTTPのみを許可するように設定していないという問題でした。私はそれを把握するためにアプリケーションがコンテナの中で始まっていたので、VSを使ってデバッグしなければなりませんでした。ありがとう。

関連する問題