docker 中容器通过 API 互相访问

在使用 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 协议》,转载必须注明作者和本文链接
讨论数量: 11

小编你好 我有一个问题 docker的 php容器里面运行了一个swooles 的 tcp 服务 怎么配置能访问到这个tcp服务

3年前 评论
Mortence (楼主) 3年前

好的 感谢小编

3年前 评论

这个方法不错,比用 extra_hosts 方便

3年前 评论

您好, 您是怎么配置的呢格式, 我这配置后 运行重构均报格式错误: services.nginx.networks contains {"frontend": [{"aliases": ["xxxx.xmmyrj.com"]}]}, which is an invalid type, it should be a string;

file

2年前 评论
Mortence (楼主) 2年前
brucezhang (作者) 2年前
Mortence (楼主) 2年前
brucezhang (作者) 2年前
Mortence (楼主) 2年前
brucezhang (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!