启动postgres容器出现错误 - mkdir:权限被拒绝。

6

我使用以下docker-compose.yml文件启动Postgres容器:

version: '3'
services:
  db:
    image: postgres:latest
    container_name: postgres
    environment:
      POSTGRES_USER: usr
      POSTGRES_PASSWORD: pswd
      POSTGRES_DB: db
      PGDATA: /var/lib/postgresql/data/pgdata
    ports:
        - 5432:5432
    volumes:
        - nfs_cur_dir:/var/lib/postgresql/data

volumes:
  nfs_cur_dir:
    driver: local
    driver_opts:
      type: nfs
      o: "addr=10.15.187.88,rw"
      device: ":/u/uname/home/database"

在启动容器时,我遇到了以下错误

$sudo ./docker-compose  up db
Starting postgres ... done
Attaching to postgres
postgres    | mkdir: cannot create directory ‘/var/lib/postgresql/data’: Permission denied
postgres exited with code 1

database 目录的权限为 777

drwxrwxrwx 3 uname grpname 4096 May 5 22:57 database

故障后我还看到创建了 pgdata 目录:

drwx------ 2 polkitd root 4096 May 5 22:57 pgdata

注意:

  • Postgres 的数据目录被映射到 NFS 位置。因此,我在 docker-compose 中定义了一个新的 NFS 卷,并将其映射到 postgres 容器。
  • 我正在使用 PGDATA 环境变量来定义数据目录的不同位置。
  • 除了上述两个事情之外,没有什么特别的。如果我使用本地驱动器位置作为数据目录,这可以正常工作!
1个回答

0
你应该检查NFS共享的权限设置。根据你的描述,如果使用本地驱动器就能正常工作。这就是为什么我认为NFS共享的权限设置没有按照你的期望工作。也许在尝试运行应用程序之前,你应该先创建目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接