ホームページ  >  に質問  >  本文

Dockerコンテナ間でのAPI呼び出し

<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粉764003519P粉764003519417日前453

全員に返信(1)返信します

  • P粉956441054

    P粉9564410542023-08-30 13:02:20

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

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

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

    返事
    0
  • キャンセル返事