Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Mongodb卷装载到Azure Web App中的Azure文件以用于容器_Mongodb_Docker Compose_Azure Web App For Containers - Fatal编程技术网

将Mongodb卷装载到Azure Web App中的Azure文件以用于容器

将Mongodb卷装载到Azure Web App中的Azure文件以用于容器,mongodb,docker-compose,azure-web-app-for-containers,Mongodb,Docker Compose,Azure Web App For Containers,我有一个作为docker容器运行的应用程序,该应用程序连接到另一个容器Mongodb,我想将Mongodb卷数据/db装载到Azure共享文件。我正在使用docker compose文件定义我的容器。假设我已经有一个链接到应用程序的存储帐户,这就是我在docker compose中定义docker卷的方式 database: image: "mongo:latest" container_name: database ports: - "27017:270

我有一个作为docker容器运行的应用程序,该应用程序连接到另一个容器Mongodb,我想将Mongodb卷
数据/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

在文章中提到,不建议安装
数据/db
,而且它不会工作。我的问题是:


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

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

示例docker组合文件如下所示:

version: '3.7'

services:
   web:
     image: mongo:latest
     ports:
       - "27017:27017"
     volumes:
       - fileshare:/data/mongodb
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"
并使用此docker compose文件创建Web应用程序,并使用值
mongod--dbpath=/data/mongodb--bind_ip_all
设置开始文件。例如,如果使用Azure CLI,则创建命令如下所示:

version: '3.7'

services:
   web:
     image: mongo:latest
     ports:
       - "27017:27017"
     volumes:
       - fileshare:/data/mongodb
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"
最后,您需要如下设置文件共享装载:


或者按照CLI中的步骤操作。

还有其他问题吗?它能解决你的问题吗?请给出响应。我在docker compose中添加了启动命令,它将
数据/mongod
装载到我的存储器中。但是现在我得到了另一个错误`F STORAGE[initandlisten]原因:1:不允许操作`mongodb容器尝试检查
WiredTiger.w
文件时发生了什么,它失败了,因此它重新启动容器,在那里找到相同的文件,并创建另一个
WiredTiger.w.2
等等。如何解决这个问题?@MohamadSobhie不要将命令放在docker compose文件中。我也试过了。但它不起作用。只需按照答案中的CLI命令操作即可。它工作正常。您的命令对我不起作用,应用程序工作正常,但我在存储中没有看到任何文件,在创建应用程序时指定mongodb路径是否会使它成为每次我重新创建mongodb容器时的启动命令?@MohamadSobhie是的,每次创建Web应用程序都需要启动命令。正如您提供的链接中显示的原因。