Estoy usando Laradock en mi proyecto Laravel para dockerizar con Nginx, Postgres y Pgadmin. Todos los contenedores funcionan bien, pero Pgadmin no puede hacerlo. Aquí está mi registro de errores,
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.He intentado muchas maneras de resolver este problema. Tal como,
OSError: [Errno 13] Permiso denegado: '/var/lib/pgadmin'
https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html
y algunos otros problemas de github y sus soluciones. También ejecuto el sudo chmod -R 777 ~/.laradock/data/pgadmin y sudo chmod -R 777 /var/lib/pgadmin para obtener el permiso pero sigue el mismo registro de errores. ¿Pueden ayudarme en esto? Creo que otros también están recibiendo este error en su máquina local. Gracias 🙂
La única solución que puedo proporcionar es iniciar sesión en el contenedor con
docker-compose exec --user root pgadmin shy luego
chmod 0777 /var/lib/pgadmin -Rprobablemente sea mejor crear su propio dockerfile desde dpage/pgadmin4 y ejecutar estos comandos por adelantado.
Puedes intentar esto:
sudo chown -R 5050:5050 ~/.laradock/data/pgadminLuego reinicie el contenedor. Causa en el contenedor con:
uid=5050(pgadmin) gid=5050(pgadmin)y
drwx------ 4 pgadmin pgadmin 56 Jan 27 08:25 pgadminComo otros han señalado anteriormente, descubrí que Permiso denegado: '/var/lib/pgadmin/sessions' en Docker habla del desafío en la carpeta local persistente que no tiene los permisos de usuario correctos.
Después de ejecutar sudo chown -R 5050:5050 ~/.laradock/data/pgadmin y reiniciar el contenedor, el siguiente error ya no está en mi registro
PermissionError: [Errno 13] Permiso denegado:
Ocurre un error similar al usar Kubernetes y el gráfico de timón pgadmin4 de https://github.com/rowanruseler/helm-charts .
La solución es poner:
VolumePermissions: enabled: true incluso cuando la persistencia no está habilitada. De esta forma, también se asignan los permisos correctos a la carpeta /var/lib/pgadmin en el contenedor y la base de datos pgadmin4.db se puede crear correctamente.
Suponiendo que tiene una carpeta con pgadmin4.db ya definida en su repositorio de git con otro usuario que no sea pgadmin, puede hacerlo:
postgres_interface: image: dpage/pgadmin4 environment: - PGADMIN_DEFAULT_EMAIL=user@domain.com - PGADMIN_DEFAULT_PASSWORD=postgres ports: - "5050:80" user: root volumes: - ./env/local/pgadmin/pgadmin4.db:/pgadmin4.db entrypoint: /bin/sh -c "cp /pgadmin4.db /var/lib/pgadmin/pgadmin4.db && cd /pgadmin4 && /entrypoint.sh"