在 Azure Web 应用程序中跨 docker 重新启动保留内容
Persisting content across docker restart within an Azure Web App
我正在尝试 运行 ghost docker image on Azure within a Linux Docker container. This is incredibly easy to get up and running using a custom Docker image for Azure Web App on Linux 并将其指向 ghost 的官方 docker 中心图像。
不幸的是,official docker image 将所有数据存储在 /var/lib/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 容器内装载文件共享,然后将数据存储在那里。有关详细信息,请参阅 these docs。
- 您可以切换到新的 container instances,因为它们提供批量支持。
- 您可以切换到 Azure Container Service。这需要一个编排器,例如 Kubernetes,并且可能比您正在寻找的工作更多,但它也提供了更多的灵活性,提供了更好的可靠性和扩展性以及其他好处。
不幸的是,Linux 上的 Azure Web 应用目前不支持将持久存储(或自带存储)设置为特定路径。
也就是说,您可以尝试使用 ssh 并尝试将 ghost 配置为指向 /home/ 而不是 /var/lib/。
我在这里准备了一张 docker 图片:https://hub.docker.com/r/elnably/ghost-on-azure that adds the ssh capability the dockerfile and code can be found here: https://github.com/ahmedelnably/ghost-on-azure/tree/master/1/alpine.
尝试将您的 Web 应用配置为使用 elnably/ghost-on-azure:latest,浏览该站点(以启动容器)并转到 ssh 页面。scm.azurewebsites.net,以了解更多信息SSH 检查 link: https://aka.ms/linux-ssh.
在 appsettings 中将 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置为 true,主目录将从您的外部 kudo 实例映射:
https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq
我正在尝试 运行 ghost docker image on Azure within a Linux Docker container. This is incredibly easy to get up and running using a custom Docker image for Azure Web App on Linux 并将其指向 ghost 的官方 docker 中心图像。
不幸的是,official docker image 将所有数据存储在 /var/lib/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 容器内装载文件共享,然后将数据存储在那里。有关详细信息,请参阅 these docs。
- 您可以切换到新的 container instances,因为它们提供批量支持。
- 您可以切换到 Azure Container Service。这需要一个编排器,例如 Kubernetes,并且可能比您正在寻找的工作更多,但它也提供了更多的灵活性,提供了更好的可靠性和扩展性以及其他好处。
不幸的是,Linux 上的 Azure Web 应用目前不支持将持久存储(或自带存储)设置为特定路径。 也就是说,您可以尝试使用 ssh 并尝试将 ghost 配置为指向 /home/ 而不是 /var/lib/。 我在这里准备了一张 docker 图片:https://hub.docker.com/r/elnably/ghost-on-azure that adds the ssh capability the dockerfile and code can be found here: https://github.com/ahmedelnably/ghost-on-azure/tree/master/1/alpine.
尝试将您的 Web 应用配置为使用 elnably/ghost-on-azure:latest,浏览该站点(以启动容器)并转到 ssh 页面。scm.azurewebsites.net,以了解更多信息SSH 检查 link: https://aka.ms/linux-ssh.
在 appsettings 中将 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置为 true,主目录将从您的外部 kudo 实例映射:
https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq