我有一个docker-compose.yml文件,它是为两个环境( dev和prod )设置的
docker-compose.yml
包含两种环境的共享配置。
version: '3.1'
services:
homeassistant:
restart: unless-stopped
privileged: true
network_mode: hostdocker-compose.dev.yml
包含开发环境的配置。
version: '3.1'
services:
homeassistant:
image: registry.gitlab.com/addisonlynch/homeassistant/hass:dev
container_name: hass-devdocker-compose.prod.yml
包含生产环境的配置。
version: '3.1'
services:
homeassistant:
image: registry.gitlab.com/addisonlynch/homeassistant/hass:prod
container_name: hass-prod我可以按以下方式运行dev环境:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up以及刺激环境:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up这两个环境都运行得完美无缺,但是我只能让一个环境同时运行。如果我试图在dev运行时(在同一主机上)旋转prod,那么dev容器将退出,prod容器将启动(实际上是替换它们)。如何同时运行两个环境?
发布于 2020-03-21 23:59:24
如果你做docker-compose --help,你会看到:
-p, --project-name NAME Specify an alternate project name
(default: directory name)这意味着,在默认情况下,当您执行docker-compose up时,组合管理您的服务作为项目的一部分,该项目以docker-compose.yml文件所在的目录名命名。由于dev & prod复合文件位于同一个目录中,并且具有相同的服务名称,因此无法将两者区分开来。
考虑到这一点,为了同时运行dev & prod环境,需要通过-p或--project-name标志指定项目名称,如下所示:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml -p dev_env up另一个选项是使用COMPOSE_PROJECT_NAME环境变量,如:
COMPOSE_PROJECT_NAME=dev_env docker-compose -f docker-compose.yml -f docker-compose.dev.yml up如果两个dev & prod都使用相同的端口,那么在您的情况下潜在的问题可能是host网络模式。在这种情况下,你第二次开始的那个就不能开始了。
发布于 2020-03-21 23:58:40
https://stackoverflow.com/questions/60794128
复制相似问题