部署教程
DBX 连接 1Panel 数据库:Docker 网络、PostgreSQL 与 Redis
排查 DBX 与 1Panel 数据库之间的连接,分清容器端口、网络名称和登录账号。
DBX 运行了,数据库却连不上
电脑、VPS 宿主机和 Docker 容器各有自己的 localhost。DBX 在容器中连接 127.0.0.1,访问的是自身容器。本篇从现有 1Panel 数据库和网络开始检查,DBX 基础安装见相关教程。
注册推荐码:KuZhuJi
找到数据库所在的网络
先查看容器、端口映射和 Docker 网络:
sudo docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'
sudo docker network lssudo docker inspect --format '{{json .NetworkSettings.Networks}}' YOUR_DATABASE_CONTAINERYOUR_DATABASE_CONTAINER 换成实际名称。127.0.0.1:15432->5432 表示宿主机 15432 映射到容器 5432。DBX 与数据库在同一个用户自定义网络时,连接数据库容器名的 5432。
让 DBX 加入已有网络
1Panel 应用商店可安装 DBX;手动 Compose 与应用商店选择一种方式维护。手动部署先建立目录和入口密码:
mkdir -p ~/services/dbx-panel
cd ~/services/dbx-panel
umask 077
printf 'DBX_PASSWORD=%s\n' "$(openssl rand -hex 24)" > .env
chmod 600 .env将 your-existing-database-network 换成前面查到、包含数据库的实际网络名:
name: dbx-panel
services:
dbx:
image: t8y2/dbx:0.6.29
restart: unless-stopped
ports:
- "127.0.0.1:4224:4224"
environment:
DBX_PASSWORD: ${DBX_PASSWORD:?请先设置入口密码}
volumes:
- dbx-data:/app/data
networks:
- database-net
stop_grace_period: 90s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
dbx-data:
networks:
database-net:
external: true
name: your-existing-database-networkdocker compose config --quiet
docker compose pull
docker compose up -d
docker compose psexternal: true 复用已有网络。临时 docker network connect 可用于诊断,长期连接写回 Compose,容器重建后沿用。SSH 转发使用 ssh -N -L 14224:127.0.0.1:4224 your-user@your-vps,本机访问 http://127.0.0.1:14224。
连接 PostgreSQL 和 Redis
PostgreSQL Host 填共享网络中的数据库容器名,端口通常为 5432;再填库名和专用数据库账号。连接后检查身份:
SELECT current_database() AS database_name,
current_user AS login_role,
current_schema() AS schema_name;只读角色的授权参考 CloudBeaver 只读权限教程。Redis 使用实际网络别名与 6379,按实例的 ACL 配置填写用户名、密码和数据库编号;查询先限定应用键前缀。
区分网页入口和数据库链路
宿主机 Caddy 可以转发到回环端口:
db.example.com {
reverse_proxy 127.0.0.1:4224
}1Panel 的代理若在容器里,127.0.0.1 不是宿主机。代理与 DBX 共享专用网络,通过 DBX 网络别名访问 4224。
网页 502 先检查代理到 DBX 的上游;网页正常而数据库超时,查 DBX 到数据库的网络与来源限制;connection refused 查监听地址和端口;认证失败查账号、库名和认证方式。
