recherche

Maison  >  Questions et réponses  >  le corps du texte

Appels d'API dans les conteneurs Docker

<p>J'essaie d'utiliser l'API fournie à partir d'un conteneur Docker (disons <code>container_A</code>) pour accéder à un autre conteneur (<code>container_B</code>). Ces deux conteneurs sont dans le même réseau Docker. Avant d'ajouter Docker, je ferais bien sûr des appels API à <code>http://localhost:{app_port}/{endpoint}</code> et maintenant que j'ai Dockerisé l'application, chaque service est en cours d'exécution dans un Conteneur Docker, je sais en lisant d'autres questions et sites Web que vous devez utiliser l'alias du conteneur s'ils sont sur le même réseau, ou le nom du service si vous utilisez <code>docker compose</code> ;http://container_A:8000/books</code>. J'ai fait ça mais ça ne marche pas. J'ai configuré CORS dans tous les services et j'ai également essayé d'accéder au point de terminaison à partir du <em>REST Client</em> (qui est une extension VSCode de type Postman) pour voir si cela fonctionnait, et c'est le cas. J'ai également fait de la cartographie/exposition des ports. </p> <p>Juste pour fournir un peu plus d'informations, je souhaite utiliser l'API d'un conteneur Docker contenant une application Node.js pour accéder à un autre conteneur contenant une application React. </p> <p>Une idée sur la raison pour laquelle cela ne fonctionne pas ? </p>
P粉764003519P粉764003519460 Il y a quelques jours497

répondre à tous(1)je répondrai

  • P粉956441054

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

    Grâce au commentaire de @DavidMaze, j'ai commencé à l'essayer localhost 而不是 React 应用程序容器的名称,因为显然 React 在浏览器中运行。在我的情况下,每个容器的 URL 看起来像这样:http://containerName:port,当它们之间进行请求时,我会使用该 URL(因为所有这些容器都在同一个 Docker 网络中),但是每当我想从 React 容器发出请求时,我会使用 http//localhost:port.

    • containerName est le nom du conteneur de votre application. Par exemple : http://webapp:3000
    • port est le port exposé. Par exemple : 3000

    N'hésitez pas à modifier pour ajouter des informations plus utiles si nécessaire.

    répondre
    0
  • Annulerrépondre