Dockerコンテナ間でのAPI呼び出し
P粉764003519
P粉764003519 2023-08-29 19:43:11
0
1
528
<p>ある Docker コンテナ (<code>container_A</code>) から提供された API を使用して、別のコンテナ (<code>container_B</code>) にアクセスしようとしています。これら 2 つのコンテナは同じ Docker ネットワーク内にあります。もちろん、Docker を追加する前に、<code>http://localhost:{app_port}/{endpoint}</code> への API 呼び出しを行っていましたが、アプリケーションを Docker 化したので、各サービスは実行されています。 Docker コンテナー、他の質問や Web サイトを読んだことから、同じネットワーク上にある場合はコンテナーのエイリアスを使用する必要があることがわかり、<code>docker compose</code> を使用している場合はサービス名を使用する必要があります。たとえば、<code> ;http://container_A:8000/books</code>。これを実行しましたが、うまくいきません。すべてのサービスで CORS を構成し、<em>REST クライアント</em> (Postman に似た VSCode 拡張機能) 内からエンドポイントにアクセスして、それが機能するかどうかを確認してみました。実際に機能しました。ポートマッピング/ポート公開も行いました。 </p> <p>もう少し背景を説明すると、Node.js アプリケーションを含む 1 つの Docker コンテナから API を使用して、React アプリケーションを含む別のコンテナにアクセスしたいと考えています。 </p> <p>これがうまくいかない理由について何か考えはありますか? </p>
P粉764003519
P粉764003519

全員に返信(1)
P粉956441054

@DavidMaze のコメントのおかげで、明らかに React はブラウザーで実行されるため、React アプリケーション コンテナーの名前の代わりに localhost を使用する実験を開始しました。私の場合、各コンテナの URL は次のようになります: http://containerName:port コンテナ間でリクエストが行われるときにその URL を使用します (これらのコンテナはすべて同じ Docker ネットワーク内にあるため)。 React コンテナからリクエストを行う場合は、常に http//localhost:port を使用します。

  • containerName は、アプリケーションのコンテナー名です。例: http://webapp:3000
  • port は公開ポートです。例: 3000

必要に応じて、自由に編集して役立つ情報を追加してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート