python - pgadmin4 docker 无法转储服务器配置;没有名为 'flask' 的模块

标签 python docker flask docker-compose pgadmin-4

我正在尝试使用位于此处的 dpage/pgadmin4:latest docker 镜像:https://hub.docker.com/r/dpage/pgadmin4/

但是当我尝试从 docker 容器内转储我的服务器设置时,我遇到了困难。

这是一个可重现的代码:

docker-compose.yml:

version: '3.8'
services:
  pgadmin4:
    image: dpage/pgadmin4
    container_name: pgadmin4
    environment:
      - PGADMIN_DEFAULT_EMAIL=postgres@localhost
      - PGADMIN_DEFAULT_PASSWORD="K%)*r7K~57Kcnw"
      - PGADMIN_LISTEN_PORT=8080
    ports:
      - "8080:8080"
    restart: unless-stopped
    network_mode: host
docker-compose pull && docker-compose up --build -d

然后从 Web 界面 http://localhost:8080 设置一些服务器连接,并尝试从容器内部转储它们:

$ docker-compose exec pgadmin4 sh

然后:

/pgadmin4 $ python3 /pgadmin4/setup.py --dump-servers /tmp/servers.json
Traceback (most recent call last):
  File "/pgadmin4/setup.py", line 31, in <module>
    from pgadmin import create_app
  File "/pgadmin4/pgadmin/__init__.py", line 21, in <module>
    from flask import Flask, abort, request, current_app, session, url_for
ModuleNotFoundError: No module named 'flask'

我显然尝试实际安装 Flask 本身(我以为是!),但我在这里也遇到了一些麻烦:

/pgadmin4 $ pip install flask
WARNING: The directory '/home/pgadmin/.cache/pip' or its parent directory is
not owned or is not writable by the current user. The cache has been disabled.
Check the permissions and owner of that directory. If executing pip with sudo,
you may want sudo's -H flag.

Defaulting to user installation because normal site-packages is not writeable

Collecting flask
  Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
     |████████████████████████████████| 94 kB 312 kB/s 
Collecting Jinja2>=2.10.1
  Downloading Jinja2-2.11.3-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 385 kB/s 
Collecting Werkzeug>=0.15
  Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
     |████████████████████████████████| 298 kB 279 kB/s 
Collecting itsdangerous>=0.24
  Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting click>=5.1
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 332 kB/s 
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.1.tar.gz (19 kB)
Using legacy 'setup.py install' for MarkupSafe, since package 'wheel' is not installed.
Installing collected packages: MarkupSafe, Werkzeug, Jinja2, itsdangerous, click, flask
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/home/pgadmin'
Check the permissions.


最佳答案

看来容器使用的python3安装与sh路径中的不是同一个

它正在使用的位于 /venv/bin/python3 您可以在 Dockerfile 中看到它.

所以如果你运行:

/venv/bin/python3/pgadmin4/setup.py --dump-servers/tmp/servers.json

如果您使用该 python 二进制文件,该命令将起作用。对我来说,它失败了,因为 pgadmin 用户没有写入权限(root 拥有的文件夹),所以我需要使用 root 用户再次登录。为此,您需要运行:

docker-compose exec -it -u 0 pgadmin4 sh

关于python - pgadmin4 docker 无法转储服务器配置;没有名为 'flask' 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66561151/

相关文章:

performance - Nginx + uWSGI + Flask 应用程序性能测试与 ab

python - 如何使用SIFT从数据集中提取相同大小的特征向量?

python - gps 行程保存为两次 timesdelta 列。我的问题是如何将 timesdelta 转换为日期或至少转换为字符串?

python - 重命名文件,Python/Jython

php - 警报 : [pool www] user has not been defined when using thecodingmachine/php:7. 1-v3-fpm-node10

python - Heroku:关系不存在

python - 是否可以在排列问题中不使用嵌套循环?

docker - docker.io容器中的前台进程

docker - 什么是服务器错误:获取图像层时状态为0

javascript - 在 Flask 中显示加载/启动页面