1 回答

TA貢獻1860條經驗 獲得超8個贊
您應該使用 來調用容器服務containerPort
,而不是使用服務到服務通信中的 hostPort 來調用。在您的情況下,任何容器都應該7000 to 7002
使用容器名稱進行連接。
獲取http://cerner:8602/api/v1/patent/search:撥打 TCP 192.168.240.4:8602: connect: 連接被拒絕。
正如錯誤中所示,它嘗試使用發布端口進行連接。
例如
version: "3"
services:
? web:
? ? build: .
? ? ports:
? ? ? - "8000:8000"
? db:
? ? image: postgres
? ? ports:
? ? ? - "8001:5432"
當您運行 docker-compose up 時,會發生以下情況:
創建一個名為 myapp_default 的網絡。
容器是使用 web 的配置創建的。它以 web 名稱加入網絡 myapp_default。使用數據庫的配置創建容器。它以 db 名稱加入網絡 myapp_default。
在 v2.1+ 中,覆蓋網絡始終是可連接的
每個容器現在可以查找主機名 web 或 db 并獲取適當容器的 IP 地址。例如,Web 的應用程序代碼可以連接到 URL postgres://db:5432 并開始使用 Postgres 數據庫。
請務必注意HOST_PORT 和 CONTAINER_PORT 之間的區別。在上面的示例中,對于 db,HOST_PORT是8001,容器端口是5432(postgres 默認值)。網絡服務到服務通信使用CONTAINER_PORT。定義 HOST_PORT 后,也可以在 swarm 外部訪問該服務。
在 Web 容器中,到 db 的連接字符串將類似于postgres://db:5432,而在主機上,連接字符串將類似于postgres://{DOCKER_IP}:8001。
- 1 回答
- 0 關注
- 484 瀏覽
添加回答
舉報