当前位置: 首页 > 面试题库 >

使用Docker-Compose启动具有不同配置的容器的多个实例

弘浩瀚
2023-03-14
问题内容

我了解您可以使用scale命令来使用docker-compose来旋转多个容器。但是,它们都将具有相同的配置

是否可以在同一主机上以同一配置(不同.yml文件)启动容器的容器?

使用以下命令:

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

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

- 编辑 -

当我尝试运行两个命令时,将发生以下情况。

$ 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

qa.ymldev.yml这个样子的:

    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

问题答案:

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

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

关于提供持久化项目名称的方法也有一些讨论:https :
//github.com/docker/compose/issues/745



 类似资料:
  • 问题内容: 我是Docker的新手,感谢您的耐心配合。 我正在寻找一种方法来部署具有相同映像的多个容器,但是我需要向每个容器传递不同的配置(文件)? 现在,我的理解是,一旦构建了映像,就可以部署它,但是对我来说,问题是,当相同的应用程序之间的配置不同时,我看不到构建同一应用程序的多个映像的意义。容器。 如果这是正常现象,那么我将不得不处理它,但是,如果还有其他方法,请让我摆脱痛苦!:) 谢谢! 问

  • : : 这是行不通的,因为链接的容器没有配置在同一个文件中。但有没有办法实现类似的事情呢? 我想有一个更干净的设置,以设置我的生产环境,使我能够重新启动只有相关的位,改变,而不是所有的一次。

  • 问题内容: 我有一个包含4个容器的文件:redis,postgres,api,worker 在worker的开发过程中,我经常需要重新启动它才能应用更改。有什么好的方法可以在不重新启动其他容器的情况下重新启动容器(例如)? 问题答案: 这很简单:使用命令: 您可以设置杀死容器之前等待停止的时间(以秒为单位) 请注意,这将重新启动容器,但不会重建它。如果要应用更改然后重新启动,请查看其他答案。

  • 我正在尝试使用Docker Compose(在Windows上使用Docker Machine)来启动一组Docker容器。 My Docker-compose.yml: 已成功运行。运行时,得到以下输出: 我确实确认了docker容器没有运行。如何启动容器?

  • 我有一个文件,它包含4个容器:redis、postgres、api、worker 在worker的开发过程中,我经常需要重新启动它,以便应用更改。有没有什么好方法可以在不重新启动其他容器的情况下重新启动容器(例如)?

  • 我有一个比postgresql运行更早的服务器,我读到Docker-ComposeV3不再使用HealthChecks来执行。我想知道除了之外,我还有什么其他选项。也就是说,我希望docker-compose重新启动失败后关闭/关闭的容器。我找到了这个线程,它展示了如何用docker-compose重新启动一个容器,如何用docker-compose重新启动一个容器,但这并没有解决我的问题。谢谢!