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と通信できるようにするために何か必要なことはありますか?
エラーログを表示できますか? –
私はあなたがドッカー作成ファイルでdepends_onとリンクを使用しているのを見ることができます。それらのうちの1つだけを使用する必要があります(同じことを行います)。異なるコンテナを相互に通信させるために、設定ファイルでサービス名を使用していることを確認してください。 – sys0dm1n
リンクを使用しないでください(廃止予定)。最新のバージョンのdocker-composeを使用すると、コンテナはデフォルトで自動的にネットワーク化されます。たとえば、eventsiteコンテナ内のホスト名「identityserver」でidentityserverにアクセスできます。サービス名を任意のホスト名に変更します。 – mkasberg