Dee*_*shu 5 docker dockerfile docker-compose
我有 3 个撰写文件覆盖,用于开发、QA、暂存环境。我有一台服务器,我必须在那里托管/运行用于 QA 和暂存环境的容器(完全独立!!.独立的容器、网络和卷)。
在每个撰写文件覆盖中,我都有不同的卷名称、网络名称、图像名称、容器名称,所有这些都由特定于环境的.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,它会创建暂存环境映像并运行其中名为暂存的容器。
但我无法同时运行两者。端口绑定也由文件控制.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:
Run Code Online (Sandbox Code Playgroud)
我使用的是 Windows 版 Docker,详细信息如下:
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
Run Code Online (Sandbox Code Playgroud)
对我来说这真的很愚蠢。我错过了docker-compose文档中的一个重要点。您需要指定COMPOSE_PROJECT_NAME环境变量,如果未指定,它将获取您的撰写文件所在的文件夹名称。只需根据您的环境以不同的方式命名此环境变量即可。
| 归档时间: |
|
| 查看次数: |
1989 次 |
| 最近记录: |