我正在使用docker-compose(v 3.3),并且我有一组服务,如下所示。使用隔离网络缩放Docker容器
version: '3.3'
services:
jboss:
build:
context: .
dockerfile: jboss/Dockerfile
ports:
- 8080
depends_on:
- mysql
- elasticsearch
networks:
- ${NETWORK}
# - front-tier
# - back-tier
mysql:
hostname: mysql
image: mysql:latest
ports:
- 3306
networks:
- ${NETWORK}
# - back-tier
elasticsearch:
image: elasticsearch:1.7.3
ports:
- 9200
networks:
- ${NETWORK}
# - back-tier
networks:
# front-tier:
# driver: bridge
的问题/问题是关系到我的时候我的规模集装箱的一种子网(顺便说一下,我没有使用群在这里)在这个意义上,这些服务隔离的可能性,jboss1只能请参阅mysql1和elasticsearch1。对于jboss2 - mysql2 - es2也是如此。我知道这很奇怪,但任务是并行化一些测试,并且它们必须完全隔离。
正如你可能已经意识到,我已经尝试了一些方法定义一些网络(即在撰写评论),但如果我缩放容器,他们显然会在同一个网络 - 这意味着我可以从jboss-1随机ping到mysql-n。
然后,我尝试了另一种方法,这里由Arun Gupta http://blog.arungupta.me/docker-bridge-overlay-network-compose-variable-substitution/解释,他在那里提到了网络属性中的变量替换(对于那里的$ {NETWORK})。但事实证明,如果我试图通过“向上”我的容器:
NETWORK=isolated-net1 docker-compose up -d
然后
NETWORK=isolated-net2 docker-compose up -d
不会缩放容器,而是重建他们都:
Recreating docker_mysql_1 ...
Recreating docker_elasticsearch_1 ...
Recreating docker_jboss_1 ...
简而言之:在执行docker-compose up --scale
时,是否有办法隔离一组服务?
感谢