首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >权限被拒绝: Docker中的‘/var/lib/pgadmin/session’

权限被拒绝: Docker中的‘/var/lib/pgadmin/session’
EN

Stack Overflow用户
提问于 2020-11-11 14:00:24
回答 1查看 4.9K关注 0票数 4

我得到了在这个post中描述的相同问题,但在一个docker容器中。我真的不知道我的pgadmin文件驻留在什么地方来编辑它的默认path.How。我应该着手解决这个问题吗?请尽可能详细,因为我不知道如何对接。

以下是docker-compose up命令的逐字摘要:

代码语言:javascript
复制
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:

代码语言:javascript
复制
  ### 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
EN

Stack Overflow用户

回答已采纳

发布于 2020-11-11 14:23:42

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

这部分

代码语言:javascript
复制
  ### 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

代码语言:javascript
复制
    volumes:
      - ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin

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

您可以通过运行以下命令来检查它

代码语言:javascript
复制
ls -l ${DATA_PATH_HOST}

输出将如下所示

代码语言:javascript
复制
drwxrwxr-x 1 5050 5050 12693 Nov 11 14:56 pgadmin

或者

代码语言:javascript
复制
drwxrwxr-x 1 SOME_USER SOME_GROUP 12693 Nov 11 14:56 pgadmin

如果SOME_USERSOME_GROUP的in是5050,这是可以的。5050 as也是可以的。如果不是,试着按照上面的文章所描述的那样做。

代码语言:javascript
复制
sudo chown -R 5050:5050 ${DATA_PATH_HOST}/pgadmin

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

代码语言:javascript
复制
# run it as same user as you running docker-compose
echo ${DATA_PATH_HOST}

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

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64781245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档