我正在使用在3个不同的docker上运行的应用程序:
整个应用程序使用 docker-compose up
docker-compose up
真的很简单:)
我想使其具有可伸缩性,并且独立于其他应用程序运行整个应用程序的多个实例(3个docker映像),然后放置一个负载平衡器,例如haproxy它将重定向到其中一个应用程序。
haproxy
我看到我可以使用它,docker-compose up --scale blablabla但是问题是可以缩放容器,但是我真的想保持不同的“应用程序”独立。
docker-compose up --scale blablabla
例如,如果我想要该应用程序的3个版本,我将有9个dockers映像等。
我看到我们可以在docker内部运行docker --privilege(允许我创建一个内部有3个docker的docker),但是我在Stack Overflow上读到它不是合适的解决方案。
--privilege
你有解决方案吗?或至少要阅读一些文档。
我听说Kubernetes可能是一个解决方案,但我不确定。我读(在堆栈上)
如果需要紧密绑定的多个容器,则可能需要查看在其“ pods”中运行docker的Kubernetes
听起来您只希望Compose应用程序的3个不同环境或“堆栈”彼此独立运行。在这种情况下,您可以使用--project- name或-p选项来处理docker-compose。一个例子是这样的:
--project- name
-p
docker-compose
docker-compose -p appv1 up -d
docker-compose -p appv2 up -d
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。
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)。
appv1_default
appv2_default
appv3_default
如果下一个要为每个项目名称运行不同的图像,则可以在中使用环境变量插值docker-compose.yml。例如,您可以指定image: ${MYIMAGE}一项服务,然后执行以下操作:
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内实现它有帮助。