制作 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_1stack2_web_1 将 linked 为 stack2_db_1.