簡體   English   中英

致命:數據目錄“/var/lib/postgresql/data/pgdata”具有無效權限 Docker-compose

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM