使用Docker-Compose来旋转具有不同配置的容器的多个实例 [英] Using Docker-Compose to spin up multiple instances of a container with different configurations

查看:1072
本文介绍了使用Docker-Compose来旋转具有不同配置的容器的多个实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道您可以使用缩放器使用缩放命令来组合多个容器。但是,它们都将使用相同的配置。



是否可以在具有不同配置的同一主机上启动一个容器(不同的 .yml



使用以下命令:

  docker-compose -f dev.yml up -d 
docker-compose -f qa.yml up -d

只有 qa.yml 容器将运行,这不是我想要的。



- 编辑 -



当我尝试运行这两个命令时,会发生什么。 b
$ b

  $ docker-compose -f compose / dev.yml up -d 
compose_mydocker_1是最新的
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
905912df6e48 compose_mydocker/ sbin / my_init2天前Up 2天0.0.0.0:1234->80/tcp compose_mydocker_1
$ docker-compose -f compose / qa.yml up -d
重新创建compose_mydocker_1 ...
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fc912201224 compose_mydocker / sbin / my_init5秒前Up 5秒0.0.0.0:1235->80/tcp compose_mydocker_1

我的 qa.yml dev.yml 如下所示:

  mydocker:
build:..

ports:
- 1234:80#for dev.yml
# - qa.yml
的1235:80
- ENVIRONMENT = dev#,反之亦然qa

卷:
- ../assets/images:/var/www/assets


解决方案

您需要做的是更改项目名称。默认情况下,组合使用基于当前目录命名的项目。在您的情况下,您需要单独的环境,因此您需要不同的项目名称。



可以使用 docker-compose -p< project_name> 或在环境中设置 COMPOSE_PROJECT_NAME



还有一些关于提供持续使用项目名称的方法: https://github.com/docker/compose/issues/745


I understand that you can user docker-compose with the scale command to spin up multiple containers. However, they will all have the same configuration used.

Is it possible to launch a container on the same host with different configurations (different .yml files) on the same host?

Using the following commands:

docker-compose -f dev.yml up -d
docker-compose -f qa.yml up -d

only the qa.yml container will be running, which is not what I want.

-- edit --

Here's what happens when I try running both commands.

$ docker-compose -f compose/dev.yml up -d
compose_mydocker_1 is up-to-date
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
905912df6e48        compose_mydocker  "/sbin/my_init"     2 days ago          Up 2 days           0.0.0.0:1234->80/tcp   compose_mydocker_1
$ docker-compose -f compose/qa.yml up -d
Recreating compose_mydocker_1...
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
3fc912201224        compose_mydocker  "/sbin/my_init"     5 seconds ago       Up 5 seconds        0.0.0.0:1235->80/tcp   compose_mydocker_1

My qa.yml and dev.yml look like this:

mydocker: 
  build: ..

  ports:
    - "1234:80" #for dev.yml
   #- "1235:80" for qa.yml
  environment:
    - ENVIRONMENT=dev #and vice-versa for qa

  volumes:
    - ../assets/images:/var/www/assets

解决方案

What you need to do is change the project name. By default, compose uses a project named based on the current directory. In your case, you want separate environments, so you need different project names.

You can use either docker-compose -p <project_name> or set COMPOSE_PROJECT_NAME in the environment.

There is also some discussion about providing a way to persist the project name: https://github.com/docker/compose/issues/745

这篇关于使用Docker-Compose来旋转具有不同配置的容器的多个实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆