系統(tǒng)
開發(fā)環(huán)境
問題描述
- 有a和b兩個(gè)站點(diǎn),在宿主機(jī)都能訪問a和b站點(diǎn),但是a站點(diǎn)和b站點(diǎn)之間不能互通。
- 業(yè)務(wù)上通過curl訪問報(bào)錯(cuò):“Couldn't connect to server: Failed to connect to b.com port 80: Connection refused”
分析原因
- 容器間需要通信需要處于一個(gè)網(wǎng)絡(luò)中。
- 我一開始的想法是通過在yml文件指定ip,但是docker默認(rèn)使用brige網(wǎng)絡(luò),每次重啟都會重新分配ip,指定ip無效
- 參考了網(wǎng)上大佬的做法,唯自定義docker網(wǎng)絡(luò)才行
解決方法
- 創(chuàng)建自定義網(wǎng)絡(luò),指定網(wǎng)段
docker network create --subnet=170.18.0.0/16 mynetwork
- 自定義docker下nginx的ip地址,修改docker-compose.yml,綁定外部ip
version: "3"
services:
nginx:
build:
context: ./services/nginx
...
networks:
default:
ipv4_address: 170.18.0.31
networks:
default:
external:
name: mynetwork
- 奇怪的是,做了以上的操作curl依然報(bào)錯(cuò),折騰了半天,后來是編輯 /etc/host,增加指定ip的host才通,搞定!
# 原來的
127.0.0.1 a.com
127.0.0.1 b.com
# 后來的
127.0.0.1 a.com
127.0.0.1 b.com
170.18.0.31 a.com
170.18.0.31 b.com
感謝以下站點(diǎn)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。