且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

权限被拒绝:Docker 中的“/var/lib/pgadmin/sessions"

更新时间:2023-09-19 17:37:16

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

Okay. looks like problem appears when you try to run pgadmin service.

这部分

  ### 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

As you can see you trying to mount local directory ${DATA_PATH_HOST}/pgadmin into container's /var/lib/pgadmin

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

正如您在这篇 文章中看到的那样 你的本地 ${DATA_PATH_HOST}/pgadmin 目录的 UID 和 GID 必须是 5050.这是5050吗?

As you can read in this article your local ${DATA_PATH_HOST}/pgadmin directory's UID and GID must be 5050. Is this 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 一样也可以.如果没有,请尝试按照上面文章中的说明进行操作.

if SOME_USER's and SOME_GROUP's IDs are 5050, it is okay. 5050 as is also okay. If not, try to do as described in article above.

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

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

Also you need to check is environment variable exists:

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

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

If output will be empty you need to set ${DATA_PATH_HOST} or allow docker to read variables from file. There are many ways to do it.