制作 docker-compose 运行 唯一链接容器
Make docker-compose run unique linked containers
如果我 运行 一个容器的多个 docker-compose run
,它会创建主容器的多个版本,但会共享链接的容器。
有没有办法每 运行 秒启动一个完全独立的容器堆栈?
现在我有:
$ docker-compose run web &
$ docker-compose run web &
$ docker ps
CONTAINER ID IMAGE NAMES
a579904eca2d www_web www_web_run_2
cb8f07ef0ca4 www_web www_web_run_1
d3f5e6343200 www_db www_db_1
但我想要
CONTAINER ID IMAGE NAMES
a579904eca2d www_web www_web_run_2
cb8f07ef0ca4 www_web www_web_run_1
d3f5e6343200 www_db www_db_1
d3f5e6343200 www_db www_db_2
其中每个 Web 容器都有自己的数据库容器。
docker-compose
二进制帮助提供了一个选项:
-p, --project-name NAME Specify an alternate project name (default: directory name)
您可以这样做:
docker-compose -p stack1 up -d
docker-compose -p stack2 up -d
哪个会给你:
stack1_web_1
stack1_db_1
stack2_web_1
stack2_db_1
这将允许您执行类似 docker-compose -p stack1 run web cat /etc/os-release
的操作来选择要处理的特定容器。它还应该为每个堆栈保留 links。例如,如果您在 web
服务中有 db
的 link,则 stack1_web_1
将被 link 编辑为 stack1_db_1
和 stack2_web_1
将 linked 为 stack2_db_1
.
如果我 运行 一个容器的多个 docker-compose run
,它会创建主容器的多个版本,但会共享链接的容器。
有没有办法每 运行 秒启动一个完全独立的容器堆栈?
现在我有:
$ docker-compose run web &
$ docker-compose run web &
$ docker ps
CONTAINER ID IMAGE NAMES
a579904eca2d www_web www_web_run_2
cb8f07ef0ca4 www_web www_web_run_1
d3f5e6343200 www_db www_db_1
但我想要
CONTAINER ID IMAGE NAMES
a579904eca2d www_web www_web_run_2
cb8f07ef0ca4 www_web www_web_run_1
d3f5e6343200 www_db www_db_1
d3f5e6343200 www_db www_db_2
其中每个 Web 容器都有自己的数据库容器。
docker-compose
二进制帮助提供了一个选项:
-p, --project-name NAME Specify an alternate project name (default: directory name)
您可以这样做:
docker-compose -p stack1 up -d
docker-compose -p stack2 up -d
哪个会给你:
stack1_web_1
stack1_db_1
stack2_web_1
stack2_db_1
这将允许您执行类似 docker-compose -p stack1 run web cat /etc/os-release
的操作来选择要处理的特定容器。它还应该为每个堆栈保留 links。例如,如果您在 web
服务中有 db
的 link,则 stack1_web_1
将被 link 编辑为 stack1_db_1
和 stack2_web_1
将 linked 为 stack2_db_1
.