3 回答

TA貢獻1839條經驗 獲得超15個贊
連接到 docker 容器的最佳實踐是使用容器名稱,例如http://app_one:5044/check,您可以使用docker ps命令找到容器名稱。為了連接容器名稱,所有容器都必須在同一個網絡中。
但如果你想使用 IP,這就是方式。
每個容器都有不同的 IP 地址,為了從一個容器連接到另一個容器,您需要知道要連接的容器 IP 地址。127.0.0.1 不是容器 IP,它是主機 IP。
您可以通過此命令找到容器的 IP 地址,docker inspect your_container_name您將在網絡部分看到 IP
"Networks": {
"bridge_network": {
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.37",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
}
}
在我的示例中172.18.0.37是我的容器 IP 地址。所以我需要用它來交流,例如http://172.18.0.37:5044/check
請注意 IPAddress 如果容器在您重新啟動容器時可以更改,因此最好使用容器名稱

TA貢獻1871條經驗 獲得超8個贊
docker-compose.yml
從您的服務器文件中找到您的服務名稱并將其替換為:
resp, err := http.Post("http://127.0.0.1:5044/check", "application/json", bytes.NewBuffer(json))
有了這個:
resp, err := http.Post("http://<serviceName>:5044/check", "application/json", bytes.NewBuffer(json))

TA貢獻1963條經驗 獲得超6個贊
您的 docker 應用程序可以通過 Postman 從它的“外部端口”訪問
但是為了讓他們一起通信,他們需要在同一個網絡上
最簡單的方法是使用 docker-compose(而不是手動創建網絡)官方鏈接
version: '3'
services:
first:
build:
context: ./your-first-app
dockerfile: Dockerfile
ports:
- '1800:1800'
networks:
my-network:
second:
build:
context: ./your-second-app
dockerfile: Dockerfile
ports:
- '1801:1801'
networks:
my-network:
networks:
my-network:
您的網絡在行尾聲明,并通過標簽網絡(端口下方)鏈接到您的 Docker 服務
- 3 回答
- 0 關注
- 122 瀏覽
添加回答
舉報