【发布时间】:2017-08-24 07:41:24
【问题描述】:
我正在使用 docker-compose (v 3.3),并且我有一组服务,如下所示。
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
问题/问题与当我在一种子网中扩展我的容器时隔离这些服务的可能性有关(顺便说一下,我在这里没有使用 swarm),因为 jboss1 只能看到 mysql1 和 elasticsearch1 . jboss2 - mysql2 - es2 等也是如此。我知道这很奇怪,但任务是并行化一些测试,它们必须完全隔离。
您可能已经意识到,我已经尝试了一些定义网络的方法(在 compose 中进行了注释),但是如果我扩展容器,它们显然会在同一个网络上 - 这意味着我可以随机从 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时隔离一组服务?
谢谢
【问题讨论】:
标签: shell docker docker-compose docker-networking