我们公司使用Cloud Foundry来提供云服务。目前,我需要 Docker 容器解决方案来分析云铸造环境中连接的数据库。我尝试使用 cf 工具在 dockerhub 中部署 pgadmin 的 docker 容器
版本 7.5 和 7.0 以及以下 dockers
详情:
首先,我设置默认密码和默认电子邮件
PGADMIN_DEFAULT_EMAIL
PGADMIN_DEFAULT_PASSWORD
否则启动将中止。
其次,如果我尝试在没有任何与 tcp ip 相关的环境的情况下开箱即用,则会发生由gunicorn发送的连接拒绝错误
我使用变量设置监听地址 0.0.0.0 和默认端口 8080
PGADMIN_LISTEN_ADDRESS
PGADMIN_LISTEN_PORT
https://www.pgadmin.org/docs/pgadmin4/7.5/container_deployment.html#environment-variables
如果我尝试部署 pgadmin docker 映像,我会在启动期间在控制台日志中看到,pgadmin 初始化在给定主机 0.0.0.0 上启动,并使用带有 Gunicorn 的给定端口 8080。
然后主机 10.xx.yy.yx 的端口 80 和 443 上会显示连接拒绝错误。
例如:
[CELL.0] 无法与 10.xx.xz.yz:80 建立 TCP 连接:拨打 tcp 10.xx.xz.yz:80:连接:连接被拒绝
我在 pgadmin 中寻找其他可能的环境设置,并通过 PGADMIN_CONFIG 前缀设置了许多与 tcp ip 堆栈相关的环境。最后我分析了 pgadmin4 的 python 源代码、shell 脚本和 Dockerfile。
我发现,docker容器默认暴露了80和443端口。我通过gunicorn查看其他环境https://github.com/benoitc/gunicorn/blob/master/gunicorn/config.py
但是目前无法使用官方的 docker 镜像。如果我从 pgadmin 的 docker hub 中选择其他镜像,我可以使用这些镜像,但是这些 docker 镜像使用从 FTP 目录下载并设置其他端口暴露。
当然,我可以使用 pgadmin4 的其他图像,或者我可以使用其他解决方案,例如 Cloud dbeaver docker Images。
我们部门更喜欢pgadmin方式。
有人对如何使用 dpage pgadmin4 图像解决此问题有任何想法吗?
我们能够使用下面的清单将 pgadmin4 ui 部署到具有特定图像的 CF。问题出在最新图像上。希望这有帮助
applications:
- name: sandbox-ilm-pgadmin
docker:
image: dpage/pgadmin4:2023-05-02-1
instances: 1
health-check-type: process
env:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: Sandbox123*
PGADMIN_LISTEN_ADDRESS: 0.0.0.0