Lazy loaded image
Docker 部署 Halo + MariaDB 博客完整教程:外部网络实现数据库复用
字数 865阅读时长 3 分钟
2025-11-27
2025-11-29
type
status
date
slug
summary
tags
category
icon
password
菜单级别
Place
Verification
Owner
本教程将指导您使用 Docker Compose 部署 Halo 博客系统和 MariaDB 数据库。通过创建独立的外部网络,实现 MariaDB 容器的复用,让多个 Docker 应用可以共享同一个数据库实例。

前置准备

  • 已安装 Docker 和 Docker Compose
  • 基本的 Linux 命令行操作知识
  • 服务器或本地环境的 root 权限

第一步:创建外部网络

首先创建一个独立的 Docker 网络,这样 MariaDB 可以被多个容器共享使用:

第二步:部署 MariaDB 数据库

创建 MariaDB 的 docker-compose.yml 配置文件:
配置说明:
  • external: true 表示使用已存在的外部网络
  • MYSQL_ROOT_PASSWORD 设置 root 用户密码(请替换为强密码)
  • MYSQL_INITDB_SKIP_TZINFO 跳过时区信息初始化,加快启动速度
  • 数据持久化到 ./mariadb/data 目录
启动 MariaDB:

第三步:配置 Halo 专用数据库

进入 MariaDB 容器执行数据库初始化:
输入 root 密码后,执行以下 SQL 命令:
安全提示:请将 halo数据库密码 替换为强密码,并妥善保管。

第四步:部署 Halo 博客

创建 Halo 的 docker-compose.yml 配置文件:
配置说明:
  • SPRING_R2DBC_URL 中的 mariadb 是容器名称,Docker 会自动解析
  • 确保密码与第三步中设置的一致
  • Halo 数据存储在 ./data 目录
  • 默认访问端口为 8090
启动 Halo:

第五步:访问 Halo 博客

启动完成后,通过浏览器访问:
首次访问会进入初始化向导,按照提示完成博客的基础配置即可。

优势总结

使用外部网络的好处:
  • 容器复用:多个应用可以共享同一个 MariaDB 实例
  • 资源节省:无需为每个应用部署独立数据库
  • 统一管理:集中管理数据库备份和维护
  • 网络隔离:通过独立网络提高安全性

常见问题

Q: Halo 无法连接数据库?
A: 检查以下几点:
  • 确认 MariaDB 容器正在运行:docker ps
  • 验证两个容器都在 mariadb-network 网络中
  • 确认数据库用户名和密码配置正确
Q: 如何备份数据?
A: 定期备份 ./mariadb/data./data 目录即可。
Q: 如何更新 Halo 版本?
A: 修改 docker-compose.yml 中的镜像版本,然后执行:

结语

通过这种部署方式,您可以轻松搭建一个高性能的 Halo 博客系统,并且可以方便地为其他应用复用 MariaDB 数据库,实现资源的最优配置。
上一篇
小米 AX6/AX3600 不死 Uboot 刷机教程 - 官方与 OpenWrt 互刷指南
下一篇
OpenList Docker 部署与升级完全指南