Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用dpage/pgadmin4映像运行docker compose时获取权限异常_Postgresql_Docker_Pgadmin 4 - Fatal编程技术网

Postgresql 使用dpage/pgadmin4映像运行docker compose时获取权限异常

Postgresql 使用dpage/pgadmin4映像运行docker compose时获取权限异常,postgresql,docker,pgadmin-4,Postgresql,Docker,Pgadmin 4,我正在尝试使用pgadmin4构建一个ruby rails docker compose postgreSQL db,但一直从容器中获取权限异常。即使容器中的/bin/sh也会返回相同的错误 我使用的是Ubuntu 18.04.3 LTS 完整日志 db_1 | db_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization db_

我正在尝试使用pgadmin4构建一个ruby rails docker compose postgreSQL db,但一直从容器中获取权限异常。即使容器中的/bin/sh也会返回相同的错误

我使用的是Ubuntu 18.04.3 LTS

完整日志

db_1            | 
db_1            | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1            | 
db_1            | LOG:  database system was shut down at 2020-02-05 07:15:13 UTC
db_1            | LOG:  MultiXact member wraparound protections are now enabled
db_1            | LOG:  autovacuum launcher started
db_1            | LOG:  database system is ready to accept connections
pgadmin_1       | [2020-02-05 07:15:17 +0000] [1] [INFO] Starting gunicorn 19.9.0
pgadmin_1       | [2020-02-05 07:15:17 +0000] [1] [INFO] Listening at: http://[::]:80 (1)
pgadmin_1       | [2020-02-05 07:15:17 +0000] [1] [INFO] Using worker: threads
pgadmin_1       | [2020-02-05 07:15:17 +0000] [13] [INFO] Booting worker with pid: 13
pgadmin_1       | [2020-02-05 07:15:17 +0000] [13] [ERROR] Exception in worker process
pgadmin_1       | Traceback (most recent call last):
pgadmin_1       |   File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
pgadmin_1       |     worker.init_process()
pgadmin_1       |   File "/usr/local/lib/python3.7/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.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
pgadmin_1       |     self.load_wsgi()
pgadmin_1       |   File "/usr/local/lib/python3.7/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.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
pgadmin_1       |     self.callable = self.load()
pgadmin_1       |   File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
pgadmin_1       |     return self.load_wsgiapp()
pgadmin_1       |   File "/usr/local/lib/python3.7/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.7/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 109, in <module>
pgadmin_1       |     app = create_app()
pgadmin_1       |   File "/pgadmin4/pgadmin/__init__.py", line 350, in create_app
pgadmin_1       |     paths.init_app(app)
pgadmin_1       |   File "/pgadmin4/pgadmin/utils/paths.py", line 92, in init_app
pgadmin_1       |     'The user does not have permission to read and write to the '
pgadmin_1       | Exception: The user does not have permission to read and write to the specified storage directory.
pgadmin_1       | [2020-02-05 07:15:17 +0000] [13] [INFO] Worker exiting (pid: 13)
pgadmin_1       | [2020-02-05 07:15:17 +0000] [1] [INFO] Shutting down: Master
pgadmin_1       | [2020-02-05 07:15:17 +0000] [1] [INFO] Reason: Worker failed to boot.
***_pgadmin_1 exited with code 3
(ruby rails服务被删除,因为我认为这与此无关)


重新格式化pgadmin容器中的卷允许我在容器中使用/bin/sh,但我无法使用任何命令

我在映像dpage/pgadmin4:4.18中遇到了相同的问题。仔细研究了一下,不管出于什么原因,pgadmin没有在服务器模式下运行,这会导致它使用不同的目录,但权限检查失败

为了解决这个问题,我添加了一个PGADMIN\u CONFIG\u SERVER\u MODE环境变量并将其设置为True。在本例中,您将向docker-compose.yml添加另一个环境变量,其内容如下:

PGADMIN_CONFIG_SERVER_MODE: True

第一个字母大写是非常重要的。这一行被转换成Python代码(对于那些想知道的人来说,config\u distro.py中的SERVER\u MODE=True),如果“T”没有大写,它将失败。

我也遇到了同样的问题。我可以通过将卷安装在稍微不同的位置来解决此问题:

    volumes:
      - pgadmin:/var/lib/pgadmin4/storage

请注意,在您的脚本中,它安装在
/var/lib/pgadmin/storage

尝试删除并重新创建Docker卷,以便

docker卷ls

查找卷名,后跟

docker卷rm


这将重新创建可能导致此问题的卷

听起来您的pgadmin`容器没有对
/pgadmin
文件夹的读/写权限?@richyn如何解决此问题?我对docker还是个新手。我正在使用linux,chown或chmod是否解决了这个问题?如果是这样的话,我该如何使用它呢?我实际上不太确定——这取决于你的操作系统,目录树是什么样子,你用哪个操作系统用户来编写
docker compose
,等等。我有完全相同的问题。添加此变量时,我遇到另一个错误
错误:合成文件“/docker Compose.yml”无效,因为:services.pgadmin.environment.pgadmin\u CONFIG\u SERVER\u MODE包含true,这是一个无效类型,它应该是字符串、数字或null
。你知道怎么解决这个问题吗?注意,我确实将docker-compose.yml文件中的第一个字母大写。@eastclintw00d我的docker-compose.yml文件(版本2)中的pgadmin变量部分的内容是:
-pgadmin\u CONFIG\u SERVER\u MODE=True
,据我所知,如果行的格式不是docker-compose所期望的格式,则会出现无效的类型错误。
    volumes:
      - pgadmin:/var/lib/pgadmin4/storage