docker 中的 pgadmin-4 因 Gunicorn 服务器启动错误而失败

Min*_*sha 11 docker pgadmin-4

我正在尝试在 docker 中运行 pgadmin,如下所示,并在启动 Gunicorn 20.0.4 错误时出现异常。有解决这个问题的指示吗?

docker run -p 80:80  -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
Run Code Online (Sandbox Code Playgroud)

Docker 日志

NOTE: Configuring authentication for SERVER mode.
[2021-08-13 03:03:04 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2021-08-13 03:03:04 +0000] [1] [ERROR] Retrying in 1 second.
[2021-08-13 03:03:05 +0000] [1] [ERROR] Retrying in 1 second.
[2021-08-13 03:03:06 +0000] [1] [ERROR] Retrying in 1 second.
[2021-08-13 03:03:07 +0000] [1] [ERROR] Retrying in 1 second.
[2021-08-13 03:03:08 +0000] [1] [ERROR] Retrying in 1 second.
[2021-08-13 03:03:09 +0000] [1] [ERROR] Can't connect to ('::', 80)
Run Code Online (Sandbox Code Playgroud)

atl*_*ine 14

我猜您正在禁用 IPv6 的系统上工作,从/entrypoint.sh,gunicorn 命令是下一个:

exec /venv/bin/gunicorn --timeout ${TIMEOUT} --bind ${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-80} -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile ${GUNICORN_ACCESS_LOGFILE:--} -c gunicorn_config.py run_pgadmin:app
Run Code Online (Sandbox Code Playgroud)

这意味着它默认使用 ipv6 地址,因此我认为您可以尝试使用gunicorn 通过运行PGADMIN_LISTEN_ADDRESS=0.0.0.0命令监听 ipv4 地址:

docker run -p 80:80 -e "PGADMIN_LISTEN_ADDRESS=0.0.0.0" -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
Run Code Online (Sandbox Code Playgroud)

  • 通过放置另一个侦听端口而不是 80“PGADMIN_LISTEN_PORT: 8000”来解决,如文档中所指出的:*在某些不支持扩展属性的文件系统上,如果不为 PGADMIN_LISTEN_PORT 指定大于 1024 的值,则可能无法运行 pgAdmin .* (2认同)