docker - 如何运行/托管:使用 docker-compose 在同一台机器上运行多个环境
问题描述
我有 3 个撰写文件覆盖,用于开发、质量检查、登台环境。我有一台服务器,我必须在那里为 QA 和 Staging 环境托管/运行容器(完全分开!!。分开的容器、网络和卷)。
在每个撰写文件覆盖中,我都有不同的卷名、网络名、映像名、容器名,所有这些都由特定于环境的.env
文件控制。
当我运行时docker-compose -f "docker-compose.yml" -f "docker-compose.qa.yml" up -d
,它会创建 QA 环境映像并运行名称为 QA 的容器。
当我运行时docker-compose -f "docker-compose.yml" -f "docker-compose.staging.yml" up -d
,它会创建 Staging 环境图像并运行名称为 Staging 的容器。
但我无法同时运行两者。端口绑定也由.env
文件控制,并且每个环境都不同。
(我可以指定在命令.env
期间必须使用的文件docker-compose up
)
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
解决方案
这对我来说真的很愚蠢。我错过了docker-compose文档中的一个重要点。您需要指定COMPOSE_PROJECT_NAME
环境变量,如果未指定,则它将获取您的撰写文件所在的文件夹名称。只需为您的环境命名这个环境变量,就可以了。
推荐阅读
- actionscript-3 - 清除 DisplayObject() 而不给出对象名称
- execute - 如何为 select where 子句编写动态 SQL 查询?
- nativescript - 阅读 WebView 内容
- c++ - 有谁知道这个while循环有什么问题?
- html - 幻灯片中的所有内容重叠
- javascript - 通过 eventHandler 更新状态
- php - PHP 在许多 php 文件中保存会话
- ruby-on-rails - 如何从 Rails 索引视图中的一对多关系表中获取最后更新日期
- h2o - H2o 模型训练指标日志位置
- javascript - TS4060:导出函数的返回类型已经或正在使用私有名称“类”