启动postgres容器时出错-mkdir:权限被拒绝

时间:2020-05-06 06:31:33

标签: postgresql docker docker-compose nfs

我正在使用以下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 env变量为数据目录定义其他位置。
  • 除了以上两点之外,没有什么不同寻常的。如果我将本地驱动器位置用于数据目录,则可以正常工作!

1 个答案:

答案 0 :(得分:0)

您应该检查 NFS 共享公开的权限。 根据你说的,如果你使用本地驱动器它工作正常。这就是为什么我认为 NFS 共享的权限没有像您期望的那样工作。 也许您应该在尝试运行应用程序之前创建目录。