如何在具有不同名称的同一个docker守护程序上多次运行相同的docker-compose.yml?

Wre*_*nch 22 docker docker-compose

我的情况.试图在同一个盒子上多次运行一个docker-compose结构.这是我的docker-compose.yml:

version: '3'
services:
  code:
    image: organization:java-maven
    links:
      - mysql:mysql
    volumes:
      - "${PWD}:/home/ubuntu/src"
  mysql:
    image: organization:mysql
Run Code Online (Sandbox Code Playgroud)

运行两次,docker-compose run code mvn clean test创建两个容器code和一个容器mysql.

现在,我想要一个code链接到另一个mysql,另一个 code链接到另一个 mysql.

我该如何做到这一点?这应该是在jenkins奴隶上运行的,并且maven执行不能共享mysql.

我很难尝试使用"-e KEY = VALUE"选项docker-compose runcontainer_namedocker compose文件一起尝试.

不知道该如何处理,请帮助,谢谢.

Wre*_*nch 27

因此,我过分关注使用指令手动更改容器名称.解决方案要容易得多.

docker-compose -p anything run code mvn clean test

docker-compose -p anything_else run code mvn clean test

所以,这是项目名称解决方案.-p在创建容器名称时,Docker compose将使用选项提供的值作为前缀.这意味着没有碰撞.

非常便利!

有关更多阅读:有关配置文件选项的文档

  • 这确实解决了问题,即使不同的 docker-compose 文件引用相同的图像(在这种情况下会重新创建容器)。谢谢你拯救了我的一天! (2认同)
  • 看起来不错,但是在这种情况下如何解决端口映射问题呢?假设一项服务必须与主机端口映射。因此,每个项目运行多次,您需要在“docker-compose”调用期间以某种方式指定端口映射(因为每个新项目/副本都需要映射不同的主机端口)? (2认同)
  • 您可以使用环境变量来解决端口问题: ports: '${WEB_PORT:-4242}:8080' (2认同)