![](/img/trans.png)
[英]Docker-Compose postgres upgrade initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
[英]FATAL: data directory "/var/lib/postgresql/data/pgdata" has invalid permissions Docker-compose
在 Windows 10 上的 Docker 中創建 postgres 容器時遇到問題(在 MacOS 上正常)我收到錯誤:致命錯誤:數據目錄“/var/lib/postgresql/data/pgdata”具有無效權限
完整日志
2022-12-27 11:40:08 This user must also own the server process.
2022-12-27 11:40:08
2022-12-27 11:40:08 The database cluster will be initialized with locale "en_US.utf8".
2022-12-27 11:40:08 The default database encoding has accordingly been set to "UTF8".
2022-12-27 11:40:08 The default text search configuration will be set to "english".
2022-12-27 11:40:08
2022-12-27 11:40:08 Data page checksums are disabled.
2022-12-27 11:40:08
2022-12-27 11:40:08 fixing permissions on existing directory /var/lib/postgresql/data/pgdata ... ok
2022-12-27 11:40:08 creating subdirectories ... ok
2022-12-27 11:40:08 selecting dynamic shared memory implementation ... posix
2022-12-27 11:40:08 selecting default max_connections ... 20
2022-12-27 11:40:08 selecting default shared_buffers ... 400kB
2022-12-27 11:40:08 selecting default time zone ... Etc/UTC
2022-12-27 11:40:08 creating configuration files ... ok
2022-12-27 11:40:08 2022-12-27 08:40:08.524 UTC [69] FATAL: data directory "/var/lib/postgresql/data/pgdata" has invalid permissions
2022-12-27 11:40:08 2022-12-27 08:40:08.524 UTC [69] DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
2022-12-27 11:40:08 child process exited with exit code 1
2022-12-27 11:40:08 initdb: removing contents of data directory "/var/lib/postgresql/data/pgdata"
我使用這樣的 docker-compose.yml
postgres_container:
container_name: postgres_container
image: postgres:13.3
environment:
- POSTGRES_DB=$POSTGRES_NAME_DB
- POSTGRES_USER=$POSTGRES_USER
- POSTGRES_PASSWORD=$POSTGRES_PASSWORD
- PGDATA=$POSTGRES_PGDATA
ports:
- $POSTGRES_LOCAL_PORT:$POSTGRES_DOCKER_PORT
user: postgres
volumes:
- ./postgres/scripts/init.sql:/docker-entrypoint-initdb.d/init.sql
- .:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U admin -d pgdb"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1'
memory: 4G
其中$POSTGRES_PGDATA=/var/lib/postgresql/data/pgdata
我添加 pgdata 卷
- pgdata:/var/lib/postgresql/data
並添加
volumes:
pgdata:
這個對我有用
我在 docker-compose.yml 的最后部分添加卷
version: '3.3'
services:
postgres:
image: postgres:13
environment:
- POSTGRES_DB=mybd
- POSTGRES_USER=myuser
- POSTGRES_PASSWORD=passuser
ports:
- 5432:5432
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.