すべてがdockerの外部でスタンドアロンで実行されている場合、コアがcernerから取得しようとしたときに問題なく動作します。ただし、以下のようにすべてがドッキングされている場合も同じことを行います:
http:// cerner:8602 / api / v1 / patient / searchを取得します。TCP192.168.240.4:8602をダイヤルします。接続:接続が拒否されました。.4はcernerコンテナのIPであり、.2はコアコンテナのIPです
Cernerは、コアから呼び出されるコンテナーの名前です。名前をホストサーバーのIPアドレスに変更してポートを使用しても、問題なく動作します。コンテナーDNSまたはIPを使用したコンテナー間のコンテナー化を許可しないだけです。私はプライベートネットワークの有無にかかわらず、同じことを試みました。
コンテナはすべてスクラッチです。
version: '3.7'
services: caConnector:
image: vertisoft/ca_connector:latest
ports:
- "8601:7001"
env_file:
- .env.ca_connector
networks:
- core-net
fhir:
image: vertisoft/fhir_connector:latest
container_name: cerner
ports:
- "8602:7002"
env_file:
- .env.fhir_connector
networks:
- core-net
core:
image: vertisoft/core:latest
ports:
- "8600:7000"
env_file:
- .env.core
networks:
- core-net
networks: core-net:
driver: bridge
コンテナーサービスはcontainerPort
、hostPort in Serviceではなく、を使用して呼び出してサービス通信を行う必要があります。あなたの場合、7000 to 7002
どのコンテナもコンテナ名を使用して接続する必要があります。
http:// cerner:8602 / api / v1 / patient / searchを取得します。TCP192.168.240.4:8602をダイヤルします。接続:接続が拒否されました。
エラーと同様に、公開ポートを使用して接続を試みます。
例えば
version: "3"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "8001:5432"
docker-compose upを実行すると、次のことが起こります。
myapp_defaultというネットワークが作成されます。
コンテナーは、Webの構成を使用して作成されます。これは、webという名前でネットワークmyapp_defaultに参加します。コンテナーは、dbの構成を使用して作成されます。ネットワークmyapp_defaultにdbという名前で参加します。
v2.1 +では、オーバーレイネットワークは常に接続可能です
各コンテナは、ホスト名webまたはdbを検索して、適切なコンテナのIPアドレスを取得できます。たとえば、WebのアプリケーションコードはURL postgres:// db:5432に接続し、Postgresデータベースの使用を開始できます。
HOST_PORTとCONTAINER_PORTの違いに注意することが重要です。上記の例では、DBの、HOST_PORTがある8001
と、容器ポートがある5432
(Postgresのデフォルト)。ネットワーク化されたサービス間通信はCONTAINER_PORTを使用します。HOST_PORTが定義されている場合、サービスはスウォームの外部からもアクセスできます。
Webコンテナ内では、dbへの接続文字列はのようpostgres://db:5432
になり、ホストマシンからの接続文字列はのようになりpostgres://{DOCKER_IP}:8001
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加