docker 中容器透過 API 互相訪問

Mortence發表於2020-07-16

在使用 laradock 當作開發環境的時候,遇到一個問題。不同專案在 docker 內 使用 API 互相訪問的時候,因為 php 程式碼實際是在 php-fpm 容器內執行,透過 API 方式呼叫另一個專案的時候,會走到 nginx 容器,就存在跨容器呼叫的問題。一開始的解決方法是在 php-fpm 容器的配置項 extra_hosts 中新增專案的 host 指定 nginx 容器 IP test.loc:172.18.0.3

會存在一個問題,nginx 重啟後可能會存在 IP 變化的問題,這樣就需要修改 php-fpm 的 extra_hosts 配置,再重啟 php-fpm 容器,比較麻煩。

查了一下,有另一方案,在 nginx 的配置項的 networks 的網路配置下面新增 host 配置就行。類似這樣

networks:
  frontend:
    aliases:
      - test.loc

即可解決。
可新增多行 host。

原理沒細研究,差不多是把 frontend 網路配置了多個別名,這樣在不同的容器內就都可以訪問 nginx 的網路了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章