API-Aufrufe über Docker-Container hinweg
P粉764003519
2023-08-29 19:43:11
<p>Ich versuche, die bereitgestellte API von einem Docker-Container (sagen wir <code>container_A</code>) zu verwenden, um auf einen anderen Container (<code>container_B</code>) zuzugreifen. Diese beiden Container befinden sich im selben Docker-Netzwerk. Bevor ich Docker hinzufügte, würde ich natürlich API-Aufrufe an <code>http://localhost:{app_port}/{endpoint}</code> durchführen und jetzt, da ich die Anwendung Dockerisiert habe, wird jeder Dienst in einem ausgeführt Docker-Container, ich weiß aus der Lektüre anderer Fragen und Websites, dass Sie den Alias des Containers verwenden müssen, wenn er sich im selben Netzwerk befindet, oder den Dienstnamen, wenn Sie <code>docker compose</code> verwenden. Zum Beispiel <code> ;http://container_A:8000/books</code>. Ich habe das getan, aber es funktioniert nicht. Ich habe CORS in allen Diensten konfiguriert und auch versucht, über den <em>REST-Client</em> (eine Postman-ähnliche VSCode-Erweiterung) auf den Endpunkt zuzugreifen, um zu sehen, ob das funktioniert. Ich habe auch Port Mapping/Port Exposure durchgeführt. </p>
<p>Nur um ein wenig mehr Hintergrundinformationen bereitzustellen: Ich möchte die API eines Docker-Containers verwenden, der eine Node.js-Anwendung enthält, um auf einen anderen Container zuzugreifen, der eine React-Anwendung enthält. </p>
<p>Irgendwelche Ideen, warum das nicht funktioniert? </p>
感谢 @DavidMaze 的评论,我开始尝试使用
localhost
而不是 React 应用程序容器的名称,因为显然 React 在浏览器中运行。在我的情况下,每个容器的 URL 看起来像这样:http://containerName:port
,当它们之间进行请求时,我会使用该 URL(因为所有这些容器都在同一个 Docker 网络中),但是每当我想从 React 容器发出请求时,我会使用http//localhost:port
。http://webapp:3000
3000
如有需要,请随意编辑以添加更多有用的信息。