【问题标题】:Permission denied: '/var/lib/pgadmin/sessions' in Docker权限被拒绝:Docker 中的“/var/lib/pgadmin/sessions”
【发布时间】:2021-02-23 02:52:37
【问题描述】:

我遇到了与post 中描述的相同的问题,但在 docker 容器中。 我真的不知道我的 pgadmin 文件驻留在哪里来编辑它的默认路径。我该如何解决这个问题?请尽可能详细,因为我不知道如何 docker。

这里是docker-compose up命令的逐字摘要:

php-worker_1  | 2020-11-11 05:50:13,700 INFO spawned: 'laravel-worker_03' with pid 67
pgadmin_1     | [2020-11-11 05:50:13 +0000] [223] [INFO] Worker exiting (pid: 223)
pgadmin_1     | WARNING: Failed to set ACL on the directory containing the configuration database:
pgadmin_1     |            [Errno 1] Operation not permitted: '/var/lib/pgadmin'
pgadmin_1     | HINT   : You may need to manually set the permissions on
pgadmin_1     |          /var/lib/pgadmin to allow pgadmin to write to it.
pgadmin_1     | ERROR  : Failed to create the directory /var/lib/pgadmin/sessions:
pgadmin_1     |            [Errno 13] Permission denied: '/var/lib/pgadmin/sessions'
pgadmin_1     | HINT   : Create the directory /var/lib/pgadmin/sessions, ensure it is writeable by
pgadmin_1     |          'pgadmin', and try again, or, create a config_local.py file
pgadmin_1     |          and override the SESSION_DB_PATH setting per
pgadmin_1     |          https://www.pgadmin.org/docs/pgadmin4/4.27/config_py.html
pgadmin_1     | /usr/local/lib/python3.8/os.py:1023: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
pgadmin_1     |   return io.open(fd, *args, **kwargs)
pgadmin_1     | [2020-11-11 05:50:13 +0000] [224] [INFO] Booting worker with pid: 224

我的 docker-compose.yml:

  ### pgAdmin ##############################################
  pgadmin:
    image: dpage/pgadmin4:latest
    environment:
      - "PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}"
      - "PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}"
    ports:
      - "${PGADMIN_PORT}:80"
    volumes:
      - ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
    depends_on:
      - postgres
    networks:
      - frontend
      - backend

【问题讨论】:

  • 您是否在容器内挂载本地主机数据文件夹?你完成这一步了吗? pgadmin.org/docs/pgadmin4/latest/…
  • @rzlvmp 我该如何确认?对不起,我不知道码头工人..
  • 如何运行 docker 容器?通过命令行?你能提供命令吗?啊好吧。您正在使用 docker-compose。请提供 docker-compose.yml 描述(不要忘记删除敏感信息)。
  • @rzlvmp 敏感数据我认为是由我必须在此步骤之前运行的脚本设置为环境变量

标签: linux docker debian


【解决方案1】:

好的。当您尝试运行 pgadmin 服务时,似乎出现了问题。

这部分

  ### pgAdmin ##############################################
  pgadmin:
    image: dpage/pgadmin4:latest
    environment:
      - "PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}"
      - "PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}"
    ports:
      - "${PGADMIN_PORT}:80"
    volumes:
      - ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
    depends_on:
      - postgres
    networks:
      - frontend
      - backend

如您所见,您尝试将本地目录 ${DATA_PATH_HOST}/pgadmin 挂载到容器的 /var/lib/pgadmin

    volumes:
      - ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin

正如您在此article 中所读到的,您本地的${DATA_PATH_HOST}/pgadmin 目录的UID 和GID 必须是5050。这是5050吗?

可以通过运行查看

ls -l ${DATA_PATH_HOST}

输出会是这样的

drwxrwxr-x 1 5050 5050 12693 Nov 11 14:56 pgadmin

drwxrwxr-x 1 SOME_USER SOME_GROUP 12693 Nov 11 14:56 pgadmin

如果SOME_USERSOME_GROUP 的ID 是5050,没关系。 5050 也可以。如果没有,请尝试按照上面文章中的说明进行操作。

sudo chown -R 5050:5050 ${DATA_PATH_HOST}/pgadmin

还需要检查环境变量是否存在:

# run it as same user as you running docker-compose
echo ${DATA_PATH_HOST}

如果输出为空,您需要设置${DATA_PATH_HOST} 或允许 docker 从文件中读取变量。有很多方法可以做到。

【讨论】:

  • 显然我没有将我的 ${DATA_PATH_HOST} 设置为环境变量。 ls -l 指向我当前的目录。我应该将此变量设置为某个路径吗?
  • 如果你运行ls -l /pgadmin,将会有什么输出。运行 docker-compose 时您使用的是什么用户?根?
  • 我以普通用户的身份运行,(按照docs.docker.com/engine/install/ubuntu 和 docker compose docs 中的所有说明将自己添加到 docker 组。ls -l /pgadmin 没有给我这样的文件。你的意思是当前目录?它没有 pgadmin,虽然 /var/lib 有一个。
  • 我也按照您在chownvar/lib/pgadmin 的指示进行操作,错误仍然存​​在。 ls -l /var/lib: drwxrwxrwx 2 5050 5050 4096 Nov 11 15:37 pgadmin
  • 如果 ${DATA_PATH_HOST} 未设置,${DATA_PATH_HOST}/pgadmin == /pgadmin。如果不存在,Docker 会尝试创建新目录。也许码头工人从另一个地方读取环境变量。这取决于你如何运行 docker-compose。也许/var/lib/pgadmin 是对的。我可以看到有两个可能的问题:1. 未创建目录,因为未设置 ${DATA_PATH_HOST},2. 目录存在但权限错误(必须为 5050 或与容器用户 ID 相同)。
猜你喜欢
  • 2020-01-03
  • 2012-07-14
  • 2022-12-18
  • 2023-03-22
  • 2021-01-12
  • 2017-10-26
  • 2017-01-28
  • 2020-08-31
  • 2021-11-05
相关资源
最近更新 更多