3

我有一个作为 docker 容器运行的应用程序,该应用程序连接到另一个容器,即 Mongodb,我想将 mongodb 卷挂载data/db到 Azure 共享文件。我正在使用 docker compose 文件来定义我的容器。假设我已经有一个链接到应用程序的存储帐户,这就是我在 docker-compose 中定义我的 docker 卷的方式

  database:
    image: "mongo:latest"
    container_name: database
    ports:
      - "27017:27017"
    volumes: 
      - ${WEBAPP_STORAGE_HOME}/data/db:/data/db

无法将 azure 文件共享挂载为 azure 容器实例中的 mongodb 卷中,提到data/db不建议挂载并且它不起作用。我的问题是:

如何将我的 mongodb 文件挂载到 Azure 文件?如何对这些文件进行备份?如果我想将备份恢复到数据库,是否可以只上传 azure 文件中的文件并在我的 mongodb 中查看它们?

4

1 回答 1

1

对于您的问题,正如我在您发现的另一个问题中所说的那样。将 Azure 文件共享装载到 Web 应用程序将覆盖映像中的现有文件。因此,您需要在已装载 Azure 文件共享时更改 MongoDB 数据路径。

示例 docker-compose 文件如下所示:

version: '3.7'

services:
   web:
     image: mongo:latest
     ports:
       - "27017:27017"
     volumes:
       - fileshare:/data/mongodb

并使用此 docker-compose 文件创建 Web 应用程序,并将启动文件设置为 value mongod --dbpath=/data/mongodb --bind_ip_all。例如,如果您使用 Azure CLI,则创建命令如下:

az webapp create -g group_name --plan plan_name -n web_name --multicontainer-config-type compose --multicontainer-config-file docker-compose-file --startup-file "mongod --dbpath=/data/mongodb --bind_ip_all"

最后,您需要设置文件共享挂载,如下所示:

在此处输入图像描述

或按照使用 Azure 存储配置应用程序中的 CLI 步骤操作。

于 2020-02-24T08:06:41.520 回答