我的网站什么的是Docker部署,数据库为PostgreSQL
添加数据库管理工具Adminer

根据你提供的 docker-compose 配置文件,你的 Halo 博客使用的是 PostgreSQL 15.4 数据库,且配置非常规范:
- 数据库服务名:
halodb - 数据库名:
halo - 用户名:
halo - 密码:
openpostgresql - 网络:
baota_net(外部网络) - 端口情况: 未映射到宿主机(
halodb部分没有ports字段),这意味着出于安全考虑,该数据库只能在 Docker 内部网络访问,无法直接从宝塔面板的“数据库”模块或本地客户端连接。
针对这种情况,最推荐的方法是部署一个轻量级的图形化管理容器(Adminer),并将其加入到你现有的 baota_net 网络中。
以下是具体操作步骤:
方案一:部署 Adminer 管理界面(推荐,图形化操作)
Adminer 是一个单文件的数据库管理工具,支持 PostgreSQL,非常轻量。
1. 修改 docker-compose.yml
在你的 docker-compose.yml 文件中(与 halo_ytmy 和 halodb 同级),添加以下 adminer 服务代码:
# 新增 Adminer 服务
adminer:
image: adminer:latest
container_name: halo_adminer
restart: always
ports:
- "8088:8080" # 映射到宿主机的 8088 端口,你可以根据需要修改
environment:
- ADMINER_DEFAULT_SERVER=halodb # 默认连接的数据库主机名
networks:
- baota_net # 必须加入同一个网络才能访问 halodb
depends_on:
- halodb
labels:
createdBy: "bt_apps"
注意:
- 确保缩进与上面的
halo_ytmy对齐。 ports中的8088是宿主机端口,如果已被占用,请改为其他端口(如8089)。networks必须包含baota_net,否则 Adminer 找不到halodb。
2. 重启服务
在宝塔面板的 “终端” 或通过 SSH 进入 docker-compose.yml 所在的目录,执行:
docker-compose up -d
系统会自动拉取 Adminer 镜像并启动新容器,不会干扰现有的 Halo 和数据库。
3. 访问管理界面
- 打开浏览器,访问
http://你的服务器IP:8088。 - 登录信息如下:
- 系统 (System): 选择 PostgreSQL
- 服务器 (Server): 输入
halodb(因为我们在同一网络内,直接用服务名) - 用户名 (Username):
halo - 密码 (Password):
openpostgresql - 数据库 (Database):
halo
- 点击“登录”,即可进行可视化的增删改查、导入导出操作。
在原有部署语句下方添加
adminer:
image: adminer:latest
container_name: halo_adminer
restart: always
ports:
- "8088:8080" # 映射到宿主机的 8088 端口,你可以根据需要修改
environment:
- ADMINER_DEFAULT_SERVER=halodb # 默认连接的数据库主机名
networks:
- baota_net # 必须加入同一个网络才能访问 halodb
depends_on:
- halodb
labels:
createdBy: "bt_apps"
完整部署代码
替换原有域名SQL语句
从对象存储迁移到本地需要修改附件链接,
-- 开启事务,方便回滚
UPDATE extensions
SET data = convert_to(
REPLACE(
convert_from(data, 'UTF8'),
'https://halo-i.obs.cn-north-4.myhuaweicloud.com/', -- 旧前缀(必须与实际数据完全一致)
'https://i.bn1000.com/upload/s3/' -- 新前缀
),
'UTF8'
)
WHERE convert_from(data, 'UTF8') LIKE '%https://halo-i.obs.cn-north-4.myhuaweicloud.com/%'



请登录后查看回复内容