2017-08-24 63 views
2

我试图在Linux Docker容器内的Azure上运行ghost Docker图像。这非常容易启动并运行using a custom Docker image for Azure Web App on Linux并将其指向ghost的官方码头中心图像。在Azure Web应用程序中的Docker重启时保留内容

不幸的是,official docker image存储/ var/lib/ghost路径上的所有数据,这些数据在重新启动时并未保留,所以无论何时重新启动容器,我的所有内容都会被删除,并最终恢复默认的ghost安装。

Azure不会让我执行任意命令,你基本上将它指向泊坞窗图像,并从那里启动,因此我不能使用-v命令行参数来映射卷。如果这将有助于Docker镜像配置入口点。

任何建议将是伟大的。谢谢!

回答

1

您有几种选择:

  1. 你可以通过创建一个自定义图像装载码头工人容器内的文件共享,然后将数据存储那里。有关更多详细信息,请参见these docs
  2. 您可以切换到新的container instances,因为它们提供卷支持。
  3. 您可以切换到Azure Container Service。这需要像Kubernetes这样的协调员,并且可能比您想要的要多,但它也提供了更多的灵活性,提供了更好的可靠性和扩展性以及其他好处。
+0

谢谢,选项1看起来像它可能有一些潜力,但我假设我然后需要将我的文件共享访问键烤到码头构建这使得不可能与任何人分享。 –

+1

你没有提到在你的问题中共享,所以很难理解你的场景,但你可以指定文件共享密钥作为环境变量,以便其他人可以指定他们自己的密钥。 –

+0

你是对的我没有,我只是想,如果我打算为此建立一个自定义的dockerfile,我希望能够分享它。我将尝试使用环境变量创建自定义图像并查看其工作原理。 –

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 
+0

不幸的是我没有从命令行运行,更新了我的问题以澄清 –

1

我从来没有使用过Azure,所以我不是100%确定以下内容适用。但是如果你通过CLI连接Docker,它很有可能会适用。

docker中的持久性与卷一起处理。它们基本上在容器的文件系统树内安装到外部目录中。从你的文字我明白,你想要在/home/site/wwwroot内部/var/lib/ghost path存储在内部的内容。要做到这一点,你会叫搬运工这样的:

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

+0

不幸的是,我没有从命令行运行,更新了我的问题以澄清 –

+0

为了不好。我在Docker for Azure文档中发现了这个:https://docs.docker.com/docker-for-azure/persistent-data-volumes/ – fzgregor

+0

谢谢,但我没有使用swarm我正在使用Azure Web App在Linux上:https://docs.microsoft.com/en-us/azure/app-service-web/app-service-linux-using-custom-docker-image –

1

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

通过配置您的Web应用程序来使用elnably/ghost-on-azure:latest,浏览到网站(启动容器)并转到ssh页面.scm.azurewebsites.net,以了解更多关于SSH检查这个链接:https://aka.ms/linux-ssh

+0

谢谢,这是超级有用的。实际上,我使用了一种类似的策略,只是购买了一个存储节点映像,然后通过scm连接到ssh,并从那里修改了容器。我将尝试安装文件共享,然后从自定义映像安装到该文件中,然后查看我如何继续。 –

相关问题