docker - 新应用程序版本的Docker部署工作流不丢失数据库状态吗?

标签 docker

我有一个名为A的应用程序,该应用程序使用MongoDB进行状态显示。我的计划是使用Docker,并可能为应用程序创建一个容器,为MongoDB创建一个容器,然后将A与MongoDB链接(可能使用fig)。据我了解,我应该为MongoDB状态使用数据量或“仅数据容器”。但是,如果我正确理解它,则可以链接到图像(在这种情况下为MongoDB图像)。这是否意味着我在部署新版本的A时需要重新启动MongoDB?

我想要做的是将更改部署到A(A'),而不会丢失MongoDB状态,并且(可能)不会关闭MongoDB。如果没有Docker,我只会关闭A并部署A',然后将其连接到相同的MongoDB实例(该实例仍在运行)。如果我在负载均衡器后面运行A的多个实例,这尤其重要。我如何使用Docker基础架构很好地实现这一目标?如果我运行A的单个实例,仅链接是一个好选择吗?

最佳答案

仅当MongoDB和/或数据容器链接到容器A时,才需要重新启动它们。因此,在您的情况下,我将按照以下步骤操作:

  • 使用已装载数据的卷启动“数据卷容器”。
  • 使用docker选项--volumes-from启动您的MongoDB容器,以访问第一个容器的数据。
  • 启动您的应用程序容器A,链接到MongoDB容器。

  • 无需重新启动数据或MongoDB容器,因为它们没有直接链接到您的容器应用程序。

    关于docker - 新应用程序版本的Docker部署工作流不丢失数据库状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27685171/

    相关文章:

    windows - 使用Nano Server作为基本镜像的Windows docker镜像无法在Nano Server上启动Bamboo Remote Agent

    php - 503 "Service Unavailable"在谷歌云中使用 Laravel 8 的 Docker 容器

    docker - 在 Nginx 代理后面时,Keycloak Docker 实例中的 X-Frame-Options 拒绝加载

    linux - 如何将一个进程作为 docker 的背景

    java - 如何在 Spring Boot Dockerized 应用程序中连接到特定的本地 MongoDB 实例?

    docker + 节点模块 : receiving error for local dependency while trying to run Dockerfile

    docker - 使用 docker-compose.yml 未在 docker 容器中设置环境变量

    docker - Cassandra、JNA、Docker 和 CAP_IPC_LOCK

    docker - 访问容器内的 Docker 套接字

    docker - 无法启动容器 : OCI runtime create failed: container_linux. go:349