1 回答

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