当前位置: 首页 > 面试题库 >

运行多个docker compose

禹兴安
2023-03-14
问题内容

我正在使用在3个不同的docker上运行的应用程序:

  • 第一个是可通过REST API调用的服务器HTTP
  • 第二个是rabbitmq
  • 第三个是工人

整个应用程序使用 docker-compose up

真的很简单:)

我想使其具有可伸缩性,并且独立于其他应用程序运行整个应用程序的多个实例(3个docker映像),然后放置一个负载平衡器,例如haproxy它将重定向到其中一个应用程序。

我看到我可以使用它,docker-compose up --scale blablabla但是问题是可以缩放容器,但是我真的想保持不同的“应用程序”独立。

例如,如果我想要该应用程序的3个版本,我将有9个dockers映像等。

我看到我们可以在docker内部运行docker --privilege(允许我创建一个内部有3个docker的docker),但是我在Stack
Overflow上读到它不是合适的解决方案。

你有解决方案吗?或至少要阅读一些文档。

我听说Kubernetes可能是一个解决方案,但我不确定。我读(在堆栈上)

如果需要紧密绑定的多个容器,则可能需要查看在其“ pods”中运行docker的Kubernetes


问题答案:

听起来您只希望Compose应用程序的3个不同环境或“堆栈”彼此独立运行。在这种情况下,您可以使用--project- name-p选项来处理docker-compose。一个例子是这样的:

  • 启动应用程序版本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_1appv2_worker_1appv3_worker1。如果您仅扩展appv2工作人员服务(docker- compose -p appv2 scale worker=2),则将获得额外的费用appv2_worker_2

默认情况下,compose总是创建一个默认的网络,容器可以与之通信。在这种情况下,你将有3个独立的网络(appv1_defaultappv2_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内实现它有帮助。



 类似资料:
  • 问题内容: 如何在一台机器上运行多个JVM?您如何在其他JVM中调用方法? 问题答案: 如何在一台机器上运行多个JVM? 只需启动多个进程即可。 您如何在其他JVM中调用方法? 使用任何类型的RPC框架(RMI,EJB,Web服务等)。

  • 可以运行多个WorkerMan实例,一般只要启动文件不同并且监听端口不同即可。

  • 我现在不知道如何写一个合适的方法来测试这种行为。请不要投反对票... 我现在有一个java类负责处理和向多个数据库添加数据。每个数据库保存相同的数据,但处理方式不同(例如,使用不同的插值速率进行插值)。 所以我运行程序(点击绿色矩形),修改参数(插值率)并运行程序。所以我有两个进程运行(因为大约。这就是为什么我不想冒任何中断的风险,担心数据库被搞砸了)。 我的问题是:这个修改是否适用于已经运行的进

  • 我正在使用loadrunner控制器11和load generator,容量为400个用户。 当在控制器中执行脚本时,我看到对于每个脚本,相应的mmdrv在任务管理器中运行,也就是说,如果有10个脚本在执行,则有10个mmdrv在运行。 协议:Web HTTP/HTML协议。

  • 我正在从NPM迁移到Thread,我希望并行运行脚本,例如: 它在纱线中的等价物是什么? 我发现它的等价物是分别运行每一个: 但是我不能并行运行脚本。 如何使用多个脚本

  • 问题内容: 因此,我的目标是让函数启动自己的线程,以便可以并行运行,而不必等待上一个线程完成。问题在于,它似乎不是多线程的(意味着一个线程在另一个线程开始之前就完成了)。 我也有该函数的内部,但似乎启动的线程的标识与从其运行python脚本的主线程相同。我认为我的方法不正确。 问题答案: 这是常见错误,容易出错。 只需在主线程中一次执行您的函数,然后将(我想为您函数的返回值)作为函数传递给线程,这