代码之家  ›  专栏  ›  技术社区  ›  Norgul

多个Docker compose项目中的Docker共享容器

  •  0
  • Norgul  · 技术社区  · 7 年前

    我有一个 docker-compose.yml

      app:
        build:
          context: .
          dockerfile: ./docker/app/Dockerfile
        image: ...
        container_name: app-${ENV}
        depends_on:
          - db
        expose:
          - 80
    
      db:
        image: ...
        container_name: my-cool-db
        ports:
          - "3306:3306"
    

    这就是重点 app 正在根据参数获取容器名称。因此,基本上我有一个运行以下命令的shell脚本:

    ENV=$1 docker-compose -p $1 up -d
    

    sh initializer.sh first 我会得到 app-first 容器。 -p 参数是指定的,因此可以将同一容器的多个实例分类为不同的项目。

    app-first
    app-second
    app-third
    

    我想要实现的是让所有容器使用相同的DB。但是当我做一个 docker-compose 我的DB容器仍然希望独立于他的存在而成长。

    它试图以不同的项目名称创建一个DB,但使用相同的容器名称,从而导致冲突,这是一个问题吗?

    是否可以在不使用2个单独的DB容器的情况下进行此操作?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Siyu Zeeshan Akhter    7 年前

    黑客解决方案:

    将撰写文件更改为

    services:
      app:
        image: ...
        container_name: app-${ENV}
        networks:
        - shared
        expose:
        - 80
    
      db:
        image: ...
        container_name: my-cool-db
        networks:
        - shared
        ports:
        - "3306:3306"
    
    networks:
      shared:
        external: true
    

    然后首先创建网络 docker network create shared

    打开数据库: docker-compose up -d db

    第一个应用程序: ENV=first docker-compose -p first up -d app

    第二个应用程序: ENV=second docker-compose -p second up -d app

    推荐文章