我想使用同一个 compose 文件同时运行一个多容器应用程序的多个实例。应用程序中的一个容器在某个端口上接受 websocket。
我有一个 nginx 代理来将不同的域或位置转发到应用程序的不同实例。这些实例实际上是使用该应用程序的不同租户。
我希望能够简单地运行:
docker stack deploy -c docker-stack.yml tenant1
docker stack deploy -c docker-stack.yml tenant2
并且以某种方式获得应用程序的不同端口,然后我可以在代理中使用这些端口将不同的 websocket 连接转发到不同的应用程序实例,无论是使用位置还是虚拟主机。
所以要么:
ws://tenant1.mydomain.com
or
ws://mydomain.com/tenant1
肯定可以弄清楚如何配置代理来做到这一点。我已经开始阅读一些关于:https://github.com/jwilder/nginx-proxy,这看起来不错。但是,它要求我将虚拟主机名设置为每个应用程序实例的环境变量,并且我似乎找不到使用 docker stack deploy 命令传递参数的方法?
理想情况下,我不想关心确切的端口,它们宁愿是随机的。但是它们需要以某种方式被 nginx 代理知道才能转发。我希望能够轻松地启动一个新的 appinstance(租户)堆栈并为该名称设置代理(或者如果代理可以通过应用程序的命名自动处理它,则更好)。
如果以上两个示例都有效(虚拟主机和位置),则奖励是因为这样可以在不创建子域/新域的情况下进行测试和开发。
建议?