Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在azure容器实例上部署Postgres数据库?_Postgresql_Azure_Azure Container Instances - Fatal编程技术网

Postgresql 在azure容器实例上部署Postgres数据库?

Postgresql 在azure容器实例上部署Postgres数据库?,postgresql,azure,azure-container-instances,Postgresql,Azure,Azure Container Instances,我正在尝试在azure容器实例上部署PostgresDatabase。 要使用bind mount在docker上部署(因为Azure容器实例只支持bind mount),我使用下面的命令,它部署在docker上。 docker run-d-p 5434:5432——说出一些postgres-e postgres_PASSWORD=mysecretpassword-e PGDATA=/var/lib/postgresql/data/PGDATA-v/home/ubuntu/volume:/var

我正在尝试在azure容器实例上部署PostgresDatabase。 要使用bind mount在docker上部署(因为Azure容器实例只支持bind mount),我使用下面的命令,它部署在docker上。
docker run-d-p 5434:5432——说出一些postgres-e postgres_PASSWORD=mysecretpassword-e PGDATA=/var/lib/postgresql/data/PGDATA-v/home/ubuntu/volume:/var/lib/postgresql/data postgres

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

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容器的日志中收到以下消息

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 ... 

在容器重新启动时,卷装载需要有数据。

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

容器实例最适合于短期运行操作,请不要使用ACI部署数据库来更新此问题?它解决了您的问题吗?还没有,您已经尝试了针对PostgreSQL server的Azure数据库,但在使用它时存在一些不同的问题您尝试针对PostgreSQL server的Azure数据库是什么意思?您的问题是关于在ACI上部署Postgresql数据库的。谢谢,将装载点更改为类似
/var/lib/Postgresql/foobar
的随机值对我很有用。