如何解决 Windows Subsystem for Linux 中 laradock 中的“不允许操作:'/var/lib/pgadmin'”错误?

Sha*_*ain 7 linux pgadmin docker windows-subsystem-for-linux laradock

我在我的 Laravel 项目中使用 Laradock 与 Nginx、Postgres 和 Pgadmin 进行 dockerizing。所有容器都运行良好,但 Pgadmin 无法这样做。这是我的错误日志,

pgadmin_1              | WARNING: Failed to set ACL on the directory containing the configuration database: [Errno 1] Operation not permitted: '/var/lib/pgadmin'
pgadmin_1              | Traceback (most recent call last):
pgadmin_1              |   File "run_pgadmin.py", line 4, in <module>
pgadmin_1              |     from pgAdmin4 import app
pgadmin_1              |   File "/pgadmin4/pgAdmin4.py", line 92, in <module>
pgadmin_1              |     app = create_app()
pgadmin_1              |   File "/pgadmin4/pgadmin/__init__.py", line 241, in create_app
pgadmin_1              |     create_app_data_directory(config)
pgadmin_1              |   File "/pgadmin4/pgadmin/setup/data_directory.py", line 40, in create_app_data_directory
pgadmin_1              |     _create_directory_if_not_exists(config.SESSION_DB_PATH)
pgadmin_1              |   File "/pgadmin4/pgadmin/setup/data_directory.py", line 16, in _create_directory_if_not_exists
pgadmin_1              |     os.mkdir(_path)
pgadmin_1              | PermissionError: [Errno 13] Permission denied: '/var/lib/pgadmin/sessions'
pgadmin_1              | sudo: setrlimit(RLIMIT_CORE): Operation not permitted
pgadmin_1              | [2020-06-07 11:48:43 +0000] [1] [INFO] Starting gunicorn 19.9.0
pgadmin_1              | [2020-06-07 11:48:43 +0000] [1] [INFO] Listening at: http://[::]:80 (1)
pgadmin_1              | [2020-06-07 11:48:43 +0000] [1] [INFO] Using worker: threads
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-06-07 11:48:43 +0000] [83] [INFO] Booting worker with pid: 83
pgadmin_1              | [2020-06-07 11:48:44 +0000] [83] [ERROR] Exception in worker process
pgadmin_1              | Traceback (most recent call last):
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
pgadmin_1              |     worker.init_process()
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/gthread.py", line 104, in init_process
pgadmin_1              |     super(ThreadWorker, self).init_process()
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 129, in init_process
pgadmin_1              |     self.load_wsgi()
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
pgadmin_1              |     self.wsgi = self.app.wsgi()
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
pgadmin_1              |     self.callable = self.load()
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
pgadmin_1              |     return self.load_wsgiapp()
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
pgadmin_1              |     return util.import_app(self.app_uri)
pgadmin_1              |   File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 350, in import_app
pgadmin_1              |     __import__(module)
pgadmin_1              |   File "/pgadmin4/run_pgadmin.py", line 4, in <module>
pgadmin_1              |     from pgAdmin4 import app
pgadmin_1              |   File "/pgadmin4/pgAdmin4.py", line 92, in <module>
pgadmin_1              |     app = create_app()
pgadmin_1              |   File "/pgadmin4/pgadmin/__init__.py", line 241, in create_app
pgadmin_1              |     create_app_data_directory(config)
pgadmin_1              |   File "/pgadmin4/pgadmin/setup/data_directory.py", line 40, in create_app_data_directory
pgadmin_1              |     _create_directory_if_not_exists(config.SESSION_DB_PATH)
pgadmin_1              |   File "/pgadmin4/pgadmin/setup/data_directory.py", line 16, in _create_directory_if_not_exists
pgadmin_1              |     os.mkdir(_path)
pgadmin_1              | PermissionError: [Errno 13] Permission denied: '/var/lib/pgadmin/sessions'
pgadmin_1              | [2020-06-07 11:48:44 +0000] [83] [INFO] Worker exiting (pid: 83)
pgadmin_1              | WARNING: Failed to set ACL on the directory containing the configuration database: [Errno 1] Operation not permitted: '/var/lib/pgadmin'
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-06-07 11:48:44 +0000] [1] [INFO] Shutting down: Master
pgadmin_1              | [2020-06-07 11:48:44 +0000] [1] [INFO] Reason: Worker failed to boot.
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法来解决这个问题。如,

OSError: [Errno 13] 权限被拒绝: '/var/lib/pgadmin'

https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html

以及其他一些 github 问题及其解决方案。我还运行sudo chmod -R 777 ~/.laradock/data/pgadminandsudo chmod -R 777 /var/lib/pgadmin命令来获取权限,但仍然是相同的错误日志。你们能帮我解决这个问题吗?我认为其他一些人也在他们的本地机器上遇到了这个错误。谢谢

小智 7

你可以试试这个:

sudo chown -R 5050:5050 ~/.laradock/data/pgadmin
Run Code Online (Sandbox Code Playgroud)

然后重新启动容器。容器中的原因:

uid=5050(pgadmin) gid=5050(pgadmin)
Run Code Online (Sandbox Code Playgroud)

drwx------ 4 pgadmin  pgadmin  56 Jan 27 08:25 pgadmin
Run Code Online (Sandbox Code Playgroud)


小智 5

正如其他人上面所指出的,我发现Docker 中的 Permission returned: '/var/lib/pgadmin/sessions'说明了持久性本地文件夹没有正确的用户权限所面临的挑战。

运行sudo chown -R 5050:5050 ~/.laradock/data/pgadmin并重新启动容器后,我的日志中不再出现以下错误

PermissionError: [Errno 13] 权限被拒绝: