解決docker下nginx的多個(gè)站點(diǎn)間curl拒絕連接的問題

系統(tǒng)
  • mac
開發(fā)環(huán)境
  • dbmp
問題描述
  • 有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ù)。

友情鏈接更多精彩內(nèi)容