如何在同一台机器上使用docker-compose运行/托管多个环境

5
我有3个补充文件,用于开发、QA、暂存环境。我有一个服务器,在那里我必须为QA和Staging环境托管/运行容器(完全分开!! 分离的容器、网络和卷)。
在每个补充文件中,我有不同的卷名称、网络名称、镜像名称和容器名称,所有这些都由特定于环境的.env文件控制。
当我运行"docker-compose.yml" -f "docker-compose.qa.yml" up -d时,它会创建QA环境映像并运行其中名为QA的容器。
当我运行"docker-compose.yml" -f "docker-compose.staging.yml" up -d时,它会创建Staging environment images并运行其中名为Staging的容器。但是我无法同时运行两者。端口绑定也受.env文件控制,并且对于每个环境而言都是不同的。
(我能够在docker-compose up命令期间指定要使用的.env文件)
services:
   service1:
     networks:
       - dev
     volumes:
       - "vol_service1:/some/path/to/container"
   service2:
     networks:
       - dev
     volumes:
       - "vol_service2:/some/path/to/container"
   service3:
     networks:
       - dev
     volumes:
       - "vol_service3:/some/path/to/container"
   service4:
     networks:
       - dev
     volumes:
       - "vol_service4:/some/path/to/container"

networks:
  dev:
    driver:bridge

volumes:
 vol_service1:
 vol_service2:
 vol_service3:
 vol_service4:

我正在使用Docker for Windows,以下是详细信息:

Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:31 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false

1
具体有哪些问题?你能编辑一下这个问题,加入一个docker-compose.yml文件来启动一个容器,同时匹配开发和生产环境文件,但你无法同时启动它们吗? - David Maze
是的,我不能在同一台机器上同时运行两个环境。 - Deepanshu
1个回答

5

我的做法真是太愚蠢了。在关于 docker-compose 的文档中,我漏掉了一个重要的点。 如果没有指定环境变量 COMPOSE_PROJECT_NAME,那么它会选择你的组合文件所在文件夹的名称。 只需为您的环境命名此环境变量即可轻松解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接