Dockerコンテナ間でのAPI呼び出し
P粉764003519
2023-08-29 19:43:11
<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>
@DavidMaze のコメントのおかげで、明らかに React はブラウザーで実行されるため、React アプリケーション コンテナーの名前の代わりに
localhost
を使用する実験を開始しました。私の場合、各コンテナの URL は次のようになります:http://containerName:port
コンテナ間でリクエストが行われるときにその URL を使用します (これらのコンテナはすべて同じ Docker ネットワーク内にあるため)。 React コンテナからリクエストを行う場合は、常にhttp//localhost:port
を使用します。http://webapp:3000
3000
必要に応じて、自由に編集して役立つ情報を追加してください。