我有一个使用多个子域的系统。我想至少在Docker Compose设置或Swarm中部署它们。
反向代理是唯一在主机上打开端口的容器。所有电话都经过它。是nginx。
客户端可以直接调用这两个子域。第一子域可以调用第二子域。在这种情况下,Web App可以调用API。当客户端调用时,HTTP请求具有FQN以及协议和端口。因此,客户可以致电http://sub2.my.tld/services/accounts/。该服务将返回帐户列表。每个帐户都是带有“自我”链接的超媒体文档。当客户呼叫时,自喜欢为'http://sub2.my.tld/services/accounts/ {n}'。这允许客户呼叫特定的帐户。这里什么都没有粉碎。
当Web App进行相同的调用时,它不使用FQN。相反,它使用http://api/services/accounts。然后,Web App可能会在一个漂亮的HTML页面中呈现该列表。不幸的是,API中的上下文路径(Java / Spring MVC)将自身链接返回为“ http://api/services/accounts/ {n}”。当HTML转到“客户端”时,该链接现在不可访问。如果Web App尝试调用“ http://sub2.my.tld/services/accounts”,则找不到该主机。
在内部,API使用ServletUriComponentsBuilder.fromCurrentContextPath()为自己(和其他人)创建URI。
目前,我已经通过Docker Compose进行了所有这些设置。我的最终目标是要运行3个API和Web App实例。我如何让Docker做到这一点? ????显示我感到困惑的地方。