首页 > 解决方案 > 我可以在不删除旧容器的情况下使用 docker-compose up 重新创建 Docker 容器吗?

问题描述

我正在开发 Node Js 应用程序,对于每个新版本,我想创建一个带有新图像的新 Docker(图像名称在 Docker Compose 中作为变量传递),但不删除旧的,因为我想做版本控制?

我的 Docker-Compose 文件是


    version: '3' 
        services: 
                web:
                   build: . 
                   image: ${IMAGE_NAME} 
                   container_name: ${CONTAINER_NAME} 
                   ports: 
                        - ${PORT}:8447

我运行的命令是docker-compose up -d但这将删除我的旧容器并启动一个新容器

标签: docker-compose

解决方案


拥有多个版本的容器并不理想,但我们可以使用标记更新图像的版本。您可以使用版本号标记图像。Compose 将使用生成的名称构建和标记它,然后使用该图像创建容器。

因此,无论何时您有一个新的构建,您都会使用标签生成一个新的构建图像,并且您可以跟踪构建版本的版本。

下面是帮助如何从 Docker Compose 标记图像的链接:

如何使用 docker-compose 标记 docker 镜像

但是,如果您想使用相同的图像运行容器的多个实例,您可以使用scale

docker-compose up -d --scale <imageName>=5

您也可以在撰写文件本身中使用“副本”来执行此操作。

deploy:
      mode: replicated
      replicas: 5

来源: https ://docs.docker.com/compose/compose-file/#replicas


推荐阅读