在Azure Web App中重新启动docker内容

时间:2017-08-24 13:24:54

标签: linux azure docker azure-web-sites ghost

我正在尝试在Linux Docker容器中的Azure上运行ghost泊坞窗映像。这非常容易启动并运行using a custom Docker image for Azure Web App on Linux并将其指向官方码头中心图像以获取幽灵。

不幸的是official docker image存储了/ var / lib / ghost路径上的所有数据,这些数据在重新启动时没有持久存在,因此每当重新启动容器时,我的所有内容都会被删除,最后我会返回默认的ghost安装。

Azure不会让我执行任意命令,你基本上将它指向一个泊坞窗图像并从那里触发,所以我不能使用-v命令行参数来映射一个卷。 Docker镜像确实配置了一个入口点,如果有帮助的话。

任何建议都会很棒。谢谢!

5 个答案:

答案 0 :(得分:1)

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

为此,请使用以下命令。

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

答案 1 :(得分:1)

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

docker中的持久性由卷处理。它们基本上是在容器的文件系统树中安装到外部的目录中。从您的文字中我了解到,您希望在/var/lib/ghost path内部存储内部/home/site/wwwroot内容。要做到这一点,你可以这样调用docker:

$ docker run [...] -v /var/lib/ghost:/home/site/wwwroot ghost

答案 2 :(得分:1)

您有几个选择:

  1. 您可以通过创建自定义图像,然后在那里存储数据,在Docker容器中安装文件共享。有关详细信息,请参阅these docs
  2. 您可以切换到新的container instances,因为它们可以提供音量支持。
  3. 您可以切换到Azure Container Service。这需要像Kubernetes这样的协调器,并且可能比您正在寻找的工作更多,但它也提供了更大的灵活性,提供了更好的可靠性和扩展性以及其他好处。

答案 3 :(得分:1)

不幸的是,Linux上的Azure Web Apps目前不支持将持久存储设置(或将您自己的存储设置)设置为特定路径。 这就是说,你可以使用ssh并尝试配置ghost指向/ home /而不是/ var / lib /。 我在这里准备了一个docker镜像:https://hub.docker.com/r/elnably/ghost-on-azure添加了docker文件的ssh功能,代码可以在这里找到:https://github.com/ahmedelnably/ghost-on-azure/tree/master/1/alpine

通过配置您的网络应用程序以使用elnably / ghost-on-azure:最新,浏览到网站(启动容器)并转到ssh页面.scm.azurewebsites.net来试用它,以了解更多信息SSH检查此链接:https://aka.ms/linux-ssh

答案 4 :(得分:1)

在应用程序设置中将WEBSITES_ENABLE_APP_SERVICE_STORAGE设置为true,主目录将从您的外部kudo实例映射:

https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq