Docker中运行dpage/pgAdmin时出现权限被拒绝的问题,错误信息为/var/lib/pgadmin/storage。

5

我有一个运行在Ubuntu 20.04上的dpage/pgadmin:latest Docker容器。

Client: Docker Engine - Community
 Version:           20.10.8

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8

docker-compose version 1.25.4, build 8d51620a


现在我想手动将由pgadmin创建的数据库备份保存到另一个位置。 使用pgadmin创建的备份存储在/var/lib/pgadmin/storage中。因此,我在我的docker-compose.yml中将此路径添加到docker卷中。
    volumes:
      - pgadmin_dat:/var/lib/pgadmin
      - /etc/localtime:/etc/localtime:ro
      - pgadmin_share:/var/lib/pgadmin/storage

当我启动容器时,出现了以下错误:
werkzeug.exceptions.InternalServerError: 500 Internal Server Error: The user does not have permission to read and write to the specified storage directory.

出现此错误是因为我的卷目录的所有者是root:root而不是像这里提到的那样是5050:5050pgAdmin容器部署

当我使用sudo chown -R 5050:5050 <pgadmin_share>sudo chmod -R u+rwx更改我的卷权限时,错误消失了,pgAdmin可用。

当我创建备份时,必须再次设置自动创建的子目录(pgadmin用户的用户名)的权限。

嵌套卷是否存在问题,因为我已经挂载了pgadmin_dat:/var/lib/pgadmin

我很想知道如何更好地解决这个问题。

我会很高兴听取任何建议。

1个回答

0

如果您正在使用本地环境,应该在您的目录中设置 sudo chmod 777 -R pgadmin_dat/。这将解决所有未来可能出现的问题。否则,如果您需要更高的安全性,请设置 sudo chmod 5050 -R pgadmin_dat/,它将使您的pgadmin_dat文件夹可写。

因此,您应该以相同的方式设置每个文件夹在本地机器上,而不是容器中,这样您就可以读/写。


嗨,卡洛斯,感谢您的回复。但这并不是我要求的更优雅的方式。当我使用sudo chown -R 5050:5050 <pgadmin_share>和sudo chmod -R u+rwx更改卷上的权限时,错误消失了,pgAdmin可用。当我创建备份时,必须再次设置自动创建的子目录(pgadmin用户的用户名)的权限。我已经提到过我设置了正确的权限,但在pgAdmin中创建新转储后它们会消失。 - alex21289

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