Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
Linux 在Azure Web应用程序中跨docker重新启动持久化内容_Linux_Azure_Docker_Azure Web App Service_Ghost - Fatal编程技术网

Linux 在Azure Web应用程序中跨docker重新启动持久化内容

Linux 在Azure Web应用程序中跨docker重新启动持久化内容,linux,azure,docker,azure-web-app-service,ghost,Linux,Azure,Docker,Azure Web App Service,Ghost,我正在尝试在Azure上的Linux docker容器中运行docker映像。这是难以置信的容易得到和运行,并指出它在官方码头枢纽形象的鬼 不幸的是,将所有数据存储在/var/lib/ghost路径上,该路径不会在重新启动时保持不变,因此每当容器重新启动时,所有我的内容都会被删除,而我最终会返回默认的ghost安装 Azure不允许我执行任意命令—您基本上会将其指向docker映像,并从那里触发,因此我无法使用-v命令行参数映射卷。docker映像确实配置了一个入口点(如果这有帮助的话) 任何建

我正在尝试在Azure上的Linux docker容器中运行docker映像。这是难以置信的容易得到和运行,并指出它在官方码头枢纽形象的鬼

不幸的是,将所有数据存储在/var/lib/ghost路径上,该路径不会在重新启动时保持不变,因此每当容器重新启动时,所有我的内容都会被删除,而我最终会返回默认的ghost安装

Azure不允许我执行任意命令—您基本上会将其指向docker映像,并从那里触发,因此我无法使用-v命令行参数映射卷。docker映像确实配置了一个入口点(如果这有帮助的话)


任何建议都很好。谢谢

您必须使用一个共享卷,将容器
/var/lib/ghost
目录的内容映射到主机目录。这样,您的数据将保留在主机目录中

为此,请使用以下命令

$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content ghost:1-alpine

我从未使用过Azure,因此我不能100%确定以下内容是否适用。但是,如果您通过CLI与docker接口,则很有可能应用它

docker中的持久性由卷处理。它们基本上是在容器的文件系统树内部装载到外部的目录中。从您的文本中,我了解到您希望将内部
/var/lib/ghost path
的内容存储在外部
/home/site/wwwroot
中。要执行此操作,请按如下方式调用docker:


$docker run[…]-v/var/lib/ghost:/home/site/wwwroot ghost
您有几个选项:

  • 通过创建自定义映像,然后将数据存储在Docker容器中,可以在Docker容器中装载文件共享。有关更多详细信息,请参阅
  • 您可以切换到新的,因为它们提供批量支持
  • 你可以换成电视。这需要像Kubernetes这样的协调器,而且可能比您所期望的要多,但它也提供了更多的灵活性,提供了更好的可靠性和可扩展性,以及其他好处

  • 不幸的是,在Linux上的Azure Web应用程序中,当前不支持将永久存储(或将您自己的存储)设置为特定路径。 也就是说,您可以使用ssh并尝试将ghost配置为指向/home/而不是/var/lib/。 我在这里准备了一个docker映像:它添加了ssh功能dockerfile和代码可以在这里找到:


    通过将您的web应用配置为在azure:latest上使用elnably/ghost,浏览到该站点(以启动容器)并转到ssh页面。scm.azurewebsites.net,要了解有关SSH的更多信息,请检查以下链接:。

    在appsettings中将网站\u启用\u应用程序\u服务\u存储设置为true,主目录将从外部kudo实例映射:


    不幸的是,我不是从命令行运行,我将问题更新为clarifyTo bad。我在Docker for Azure文档中发现了这一点:谢谢,但我没有使用swarm,我在Linux上使用的是Azure Web应用程序:查看他们的CLI命令文档,他们似乎还没有提供卷支持。不幸的是,我没有从命令行运行,将我的问题更新为ClarifyThank,选项1看起来可能有一些潜力,尽管我假设我需要将我的文件共享访问密钥烘焙到docker构建中,这使得无法与任何人共享。您在问题中没有提到共享,所以很难理解您的场景,但是您可以将文件共享密钥指定为环境变量,以便其他人可以指定自己的密钥。您是对的,我没有。我只是在想,如果要为此构建自定义dockerfile,我希望能够共享它。我将尝试使用环境变量创建一个自定义图像,看看它是如何工作的。谢谢,这非常有用。实际上,我使用了一种类似的策略,我刚刚获取了一个库存节点映像,然后通过scm连接到ssh,并从那里修改了容器。我将尝试挂载一个文件共享,然后从自定义映像安装到其中,看看我是如何工作的。我用过这个,但几天后我仍然看到我的数据不知怎么地丢失了。。因此,这是不可靠的或生产准备