我正在使用在3个不同的Docker上运行的应用程序:
>第一个是使用REST API调用的服务器HTTP
>第二个是rabbitmq
>第三个是工人
整个应用程序使用docker-compose启动
真的很简单:)
我想使其可扩展并独立于其他应用程序运行整个应用程序的多个实例(3个docker镜像),然后放置像haproxy这样的负载均衡器,它将重定向到其中一个应用程序.
我看到我可以使用docker-compose up –scale blablabla然而问题是我可以扩展容器,但我真的想保持不同的“应用程序”独立.
例如,如果我想要3个版本的应用程序,我将有9个泊坞窗图像等.
我看到我们可以使用–privilege在docker中运行docker(允许我用里面的3个docker创建一个docker)但我在Stack Overflow上读到它不是一个合适的解决方案.
我听说Kubernetes可能是一个解决方案,但我不确定.我看了(在堆栈上)
If you need multiple containers tightly bound,you may want to look at Kubernetes that runs docker inside their “pods”
>启动应用程序版本1:docker-compose -p appv1 up -d
>启动应用程序版本2:docker-compose -p appv2 up -d
>启动应用程序版本3:docker-compose -p appv3 up -d
此时,您将运行3组不同的容器,这些容器可以彼此独立地扩展. Docker Compose将项目名称(通常从文件夹名称推断)添加到容器名称之前.您将获得容器名称,例如appv1_worker_1,appv2_worker_1,appv3_worker1.如果您只扩展appv2工作服务(docker-compose -p appv2 scale worker = 2),那么您将获得额外的appv2_worker_2.
默认情况下,compose始终会创建容器可以在其中进行通信的默认网络.在这种情况下,您将拥有3个独立的网络(appv1_default,appv2_default和appv3_default).
如果您接下来想为每个项目名称运行不同的图像,则可以在docker-compose.yml中使用环境变量插值.例如,您可以为服务指定image:${MYIMAGE},然后执行以下操作:
> MYIMAGE = myorg / myapp:v1 docker-compose -p appv1 up -d
> MYIMAGE = myorg / myapp:v2 docker-compose -p appv2 up -d
希望这有助于在Docker Compose中做到这一点.