通过 http/s 在 ddev 项目之间进行通信
Communicating between ddev projects via http/s
过去六个月左右我一直在使用 DDev。大大提高了我的效率。谢谢!
我正在寻找一种更好的方法来将多个站点 运行 集成到单独的容器中。推荐的解决方案是使用内部容器引用(例如 ddev-projectname-web)。这对我的项目之一不起作用,因为目标站点依赖匹配的主机名进行身份验证。
场景:SiteA 通过 REST 与 SiteB 通信。
站点A
Project-name: sitea
Hostname: sitea.ddev.site
Container reference: ddev-sitea-web
站点 B
Project-name: siteb
Hostname: siteb.ddev.site
Container reference: ddev-siteb-web
为了通过 SiteB(tcp 或 rest)进行身份验证,主机名必须一致,在本例中 siteb.ddev.site,因此 ddev-siteb-web 不起作用。
我目前的解决方法是在来自 SiteA 的 REST 调用中使用 SiteB 主机名,并将内部 IP 添加到 SiteA 网络上的 /etc/hosts(类似于 172.1.0.1 siteb.ddev.site)。我正在寻找更好的解决方案,因为当我 stop/restart SiteA and/or 时主机配置丢失,当我 stop/restart SiteB.
时 IP 发生变化
一个理论上的选项是指定另一个 运行 docker 实例并自动将该 IP 地址和主机名添加到集成站点的 /etc/hosts 文件的配置设置。
谢谢!
不同的项目可以通过两种方式相互通信。
第一种方法是直接使用容器名称,我想这就是你在这里所做的。
但还有另一种方法(参见 FAQ - latest)。您只需要将 docker-compose.comm.yaml 添加到客户端项目的 .ddev 目录中,如下所示:
version: '3.6'
services:
web:
external_links:
- "ddev-router:otherproject.ddev.site"
这样您就可以使用其他站点的规范名称进行通信。这仅适用于 HTTP/S 流量,因为它通过 ddev-router,这是一个反向代理。
过去六个月左右我一直在使用 DDev。大大提高了我的效率。谢谢!
我正在寻找一种更好的方法来将多个站点 运行 集成到单独的容器中。推荐的解决方案是使用内部容器引用(例如 ddev-projectname-web)。这对我的项目之一不起作用,因为目标站点依赖匹配的主机名进行身份验证。
场景:SiteA 通过 REST 与 SiteB 通信。
站点A
Project-name: sitea Hostname: sitea.ddev.site Container reference: ddev-sitea-web
站点 B
Project-name: siteb Hostname: siteb.ddev.site Container reference: ddev-siteb-web
为了通过 SiteB(tcp 或 rest)进行身份验证,主机名必须一致,在本例中 siteb.ddev.site,因此 ddev-siteb-web 不起作用。
我目前的解决方法是在来自 SiteA 的 REST 调用中使用 SiteB 主机名,并将内部 IP 添加到 SiteA 网络上的 /etc/hosts(类似于 172.1.0.1 siteb.ddev.site)。我正在寻找更好的解决方案,因为当我 stop/restart SiteA and/or 时主机配置丢失,当我 stop/restart SiteB.
时 IP 发生变化一个理论上的选项是指定另一个 运行 docker 实例并自动将该 IP 地址和主机名添加到集成站点的 /etc/hosts 文件的配置设置。
谢谢!
不同的项目可以通过两种方式相互通信。
第一种方法是直接使用容器名称,我想这就是你在这里所做的。
但还有另一种方法(参见 FAQ - latest)。您只需要将 docker-compose.comm.yaml 添加到客户端项目的 .ddev 目录中,如下所示:
version: '3.6'
services:
web:
external_links:
- "ddev-router:otherproject.ddev.site"
这样您就可以使用其他站点的规范名称进行通信。这仅适用于 HTTP/S 流量,因为它通过 ddev-router,这是一个反向代理。