在 ACI 上为 Carto/Postgresql 设置持久数据



我的主要目标是在持久化数据的同时快速轻松地启动并运行映像。我认为ACI是最好的方法。假设这是真的...

[编辑2] 似乎可能有一个更根本的问题,即无法像在 docker 中那样指定主机名。我将在单独的线程中提出这个问题。我能够附加存储。

[原文] 我想使用 ACI 来设置这个位于 Docker Hub 上的映像。我已经能够按照这里的简单教程进行操作,但我需要附加存储。

具体来说,这是我正在使用的图像:https://hub.docker.com/r/sverhoeven/cartodb/

这些是如何设置持久数据的说明,但我认为它们不会直接转换为 ACI。这取自该 docker 中心页面的"持久数据"部分

要持久化 PostgreSQL 数据,PostGreSQL 数据目录 (/var/lib/postgresql( 必须持久化在 Cartodb Docker 容器之外。

制作临时容器

docker create --name cartodb_pgdata sverhoeven/cartodb

将 Postgresql 数据目录 (cartodb_pgdata( 保存到本地目录。 ** 我们如何与ACI一起做到这一点?

docker cp cartodb_pgdata:/var/lib/postgresql $PWD/cartodb_pgdata docker rm -f cartodb_pgdata

在文件系统上设置 (uid=105( 用户的cartodb_pgdata所有权。 ** 我们如何用ACI做到这一点?

sudo chown -R 105.105 $PWD/cartodb_pgdata 

在此之后,CartoDB容器将有一个数据库,该数据库在重新启动后保持填充状态。CartoDB 容器可以启动

docker run -d -p 80:80 -h cartodb.example.com -v $PWD/cartodb_pgdata:/var/lib/PostgreSQL sverhoeven/cartodb

我很难找到解决方案,例如:

  • 我不知道是使用 emptyDir 还是 Azure 文件共享。
  • 我不知道如何编辑所有权
  • 我不知道如何在启动容器时设置 ACI 以调用特定的 docker 运行命令

应使用 Azure 文件共享,因为 emptyDir 不是持久性存储。本质上,您需要在容器组中添加一个文件共享卷并将其挂载在/var/lib/PostgreSQL 上。默认情况下,文件共享卷将使用 777 权限装载。

由于您在创建容器时已经传递了卷信息,例如 通过 CLIaz container create,转换为底层docker run等效项。无需指定 docker 命令。

如何装载文件共享: https://learn.microsoft.com/en-us/azure/container-instances/container-instances-volume-azure-files

最新更新