在 azure 容器实例上部署 Postgres 数据库? [英] Deploying Postgres database on azure Container Instance?

查看:47
本文介绍了在 azure 容器实例上部署 Postgres 数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 azure 容器实例上部署 PostgresDatabase.要使用绑定挂载(因为 Azure 容器实例仅支持绑定挂载)在 docker 上部署,我正在使用以下命令,并将其部署在 docker 上.docker run -d -p 5434:5432 --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -e PGDATA=/var/lib/postgresql/data/pgdata -v/home/ubuntu/volum:/var/lib/postgresql/data postgres

I am trying to deploy PostgresDatabase on azure container instance. To deploy on docker using bind mount(since Azure container Instance only support bind mount) i am using the below command, and it is deployed on docker. docker run -d -p 5434:5432 --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -e PGDATA=/var/lib/postgresql/data/pgdata -v /home/ubuntu/volum:/var/lib/postgresql/data postgres

如果我在 Azure 容器实例上进行类似的部署

If i do something similar for deploying on Azure container Instance

az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name postgreariesdb25-1 \
    --location eastus \
    --image postgres \
    --dns-name-label $ACI_DNS_LABEL \
    --environment-variables POSTGRES_PASSWORD=mysecretpassword PGDATA=/var/lib/postgresql/data/pgdata  \
    --ports 5432  \
    --azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
    --azure-file-volume-account-key $STORAGE_KEY \
    --azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
    --azure-file-volume-mount-path /var/lib/postgresql/data

我在 Azure 容器的日志中收到以下消息

I am getting the below message inside logs of Azure Container

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
2020-11-24 05:23:39.218 UTC [85] FATAL:  data directory "/var/lib/postgresql/data/pgdata" has wrong ownership
2020-11-24 05:23:39.218 UTC [85] HINT:  The server must be started by the user that owns the data directory.
child process exited with exit code 1
initdb: removing contents of data directory "/var/lib/postgresql/data/pgdata"
running bootstrap script ... 

Volume Mount 需要在容器重启时有数据.

Volume Mount is required to have data in case of container restart.

推荐答案

这是将 Azure 文件共享装载到 Azure 容器实例的已知错误.目前不支持更改挂载点的所有权.如果您不想使用其他服务,那么您需要创建一个脚本将数据移动到挂载点,挂载点应该是图像中不存在的新文件夹.对你来说,挂载点/var/lib/postgresql/data存在于镜像中,并且包含了Postgresql依赖的文件,那么这个点就不能是挂载点.

This is a known error for mounting Azure File Share to Azure Container Instance. Currently, it does not support to change the ownership of the mount point. If you do not want to use other services, then you need to create a script to move the data to the mount point and the mount point should be a new folder that does not exist in the image. For you, the mount point /var/lib/postgresql/data exists in the image and contains the files that Postgresql depends on, then this point cannot be the mount point.

这篇关于在 azure 容器实例上部署 Postgres 数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆