跨Docker容器的API調用
P粉764003519
2023-08-29 19:43:11
<p>我正在嘗試從一個docker容器(假設是<code>container_A</code>)使用提供的API,來訪問另一個容器(<code>container_B</code>)。這兩個容器在同一個Docker網路中。在添加Docker之前,我當然會對<code>http://localhost:{app_port}/{endpoint}</code>進行API調用,現在我已經將應用程式Docker化,每個服務都在一個Docker容器中運行,我透過閱讀其他問題和網站得知,如果它們在同一個網路中,你必須使用容器的別名,或者如果使用了<code>docker compose</code>,則使用服務名稱,例如<code>http://container_A:8000/books</code>。我已經這樣做了,但是不起作用。我在所有服務中配置了CORS,並且還嘗試從<em>REST客戶端</em>(這是一個類似Postman的VSCode擴展)中訪問端點,以查看是否起作用,它確實起作用。我也做了端口映射/端口暴露。 </p>
<p>只是為了提供更多的背景信息,我想從一個包含Node.js應用程式的Docker容器中使用API,來訪問另一個包含React應用程式的容器。 </p>
<p>有任何關於為什麼這不起作用的想法嗎? </p>
感謝 @DavidMaze 的評論,我開始嘗試使用
localhost
而不是 React 應用程式容器的名稱,因為顯然 React 在瀏覽器中運行。在我的情況下,每個容器的URL 看起來像這樣:http://containerName:port
,當它們之間進行請求時,我會使用該URL(因為所有這些容器都在在同一個Docker 網路中),但是每當我想從React 容器發出請求時,我會使用http//localhost:port
。http://webapp:3000
3000
#如有需要,請隨意編輯以添加更多有用的信息。