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

s.k*_*s.k 2 python flask docker docker-compose pgadmin-4

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

\n

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

\n

这是一个可重现的代码:

\n

docker-compose.yml:

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

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

\n
version: \'3.8\'\nservices:\n  pgadmin4:\n    image: dpage/pgadmin4\n    container_name: pgadmin4\n    environment:\n      - PGADMIN_DEFAULT_EMAIL=postgres@localhost\n      - PGADMIN_DEFAULT_PASSWORD="K%)*r7K~57Kcnw"\n      - PGADMIN_LISTEN_PORT=8080\n    ports:\n      - "8080:8080"\n    restart: unless-stopped\n    network_mode: host\n
Run Code Online (Sandbox Code Playgroud)\n

然后:

\n
docker-compose pull && docker-compose up --build -d\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
$ docker-compose exec pgadmin4 sh\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

看来容器正在使用的python3安装与路径中的不一样sh

它正在使用的那个你可以在Dockerfile/venv/bin/python3中看到它。

所以如果你运行:

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

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

docker-compose exec -it -u 0 pgadmin4 sh