我想使用相同的撰写文件同时运行多容器应用程序的多个实例。应用程序中的一个容器接受某个端口上的websockets。
我有一个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,这看起来不错。但是,它要求我为每个app-instance设置虚拟主机名作为环境变量,我似乎找不到使用docker stack deploy命令传递参数的方法?
理想情况下,我不想关心确切的端口,他们宁愿随意。但是他们需要以某种方式知道nginx代理才能转发。我希望能够轻松地启动一个新的appinstance(租户)堆栈,并为该名称设置代理(如果代理可以通过应用程序的命名自动处理,那就更好了。)
如果上述两个示例都有效(包括虚拟主机和位置),则可获得奖励,因为这样可以在不创建子域/新域的情况下进行测试和开发。
建议?