Docker 部署 Halo 博客系统-MySQL ✨

Halo Banner


📋 目录导航


🎯 项目简介

Halo 是一款现代化的开源博客/CMS 系统,基于 Java 和 Spring Boot 构建。它提供了丰富的主题和插件生态系统,让用户可以轻松创建和管理自己的网站。


🛠️ 核心特性

特性类别 功能描述 优势
🎨 主题系统 丰富的主题选择 支持自定义设计,满足个性化需求
🔌 插件生态 功能扩展灵活 社区插件丰富,满足各种需求
📝 编辑器 富文本和Markdown支持 强大的内容编辑体验
👥 用户管理 多用户权限控制 支持团队协作和权限管理
📊 数据统计 访问统计和分析 提供详细的数据分析报告
🔍 SEO 优化 内置SEO功能 提升搜索引擎排名和可见度
🌐 响应式设计 多端适配 在手机、平板和电脑上均有良好体验
🐳 Docker 部署 容器化部署 简单便捷,易于维护和升级

🐳 一、Docker 部署 Halo 博客

1. 创建目录并编写 docker-compose.yml 文件 📁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
mkdir -p /mnt/mydisk/home/halo && cd $_ && \
cat > docker-compose.yml <<'EOF'
services:
halo:
container_name: halo
image: registry.fit2cloud.com/halo/halo:2
restart: always
depends_on:
halodb:
condition: service_healthy
networks:
halo_network: null
volumes:
- ./config/halo2:/root/.halo2
ports:
- 8090:8090
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:8090/actuator/health/readiness
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
- --halo.external-url=https://www.mobufan.eu.org:666
halodb:
container_name: halodb
image: mysql:9.4.0
restart: always
networks:
halo_network: null
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./config/mysql:/var/lib/mysql
- ./config/mysqlBackup:/data/mysqlBackup
ports:
- 3306:3306
healthcheck:
test:
- CMD
- mysqladmin
- ping
- -h
- 127.0.0.1
- --silent
interval: 3s
retries: 5
start_period: 30s
environment:
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo
networks:
halo_network: null

# Halo博客_后台地址:http://10.10.10.245:8090/console
EOF

2. 拉取镜像并启动容器 🚀

1
docker-compose up -d

3. MySQL 版本管理与验证 🔍

  • 如需使用其他版本的 MySQL 镜像,可以使用以下命令查询可用版本标签:
1
2
3
4
docker run --rm quay.io/skopeo/stable list-tags docker://mysql \
| jq -r '.Tags[]' \
| grep -E '^[8-9]\.' \
| sort -V
  • 部署完成后,可以使用以下命令验证 MySQL 版本:
1
docker exec -it halodb mysql -uroot -p'o#DwN&JSa56' -e "SELECT @@version;"

🚀 二、使用 Halo 博客

1. 首次访问设置 🎯

  1. 打开浏览器访问: http://你的服务器IP:8090/console
  2. 按照页面提示完成初始设置:
    • 创建管理员账户
    • 设置博客基本信息
    • 选择初始主题

2. 功能特性 ✨

  • 🎨 主题系统: 丰富的主题选择,支持自定义
  • 🔌 插件生态: 扩展功能,满足各种需求
  • 📝 编辑器: 强大的富文本和Markdown编辑器
  • 👥 用户管理: 多用户支持,权限控制
  • 📊 数据统计: 访问统计和内容分析
  • 🔍 SEO 优化: 内置SEO功能,提升搜索引擎排名

🌐 三、Nginx 反向代理配置

访问地址示例:https://halo.example.com:666

1. 创建 Nginx 配置文件 🔧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
mkdir -p /etc/nginx/conf.d && \
cat > /etc/nginx/conf.d/halo.conf <<'EOF'
server {
listen 666 ssl;
listen [::]:666 ssl;
server_name halo.example.com; # 替换为你的域名

# SSL 证书
ssl_certificate /etc/nginx/keyfile/cert.pem;
ssl_certificate_key /etc/nginx/keyfile/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE+AESGCM:ECDHE+CHACHA20:!aNULL:!MD5;

# 安全头部
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

# 文件大小限制
client_max_body_size 100M;

location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_buffering off;

# WebSocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

# 错误页
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF

2. 测试并重载 Nginx 🔄

1
sudo nginx -t && sudo systemctl reload nginx

🔧 四、容器维护命令

1. Docker Compose 命令 🐳

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 进入项目目录
cd /mnt/mydisk/home/halo

# 停止并删除容器
docker-compose down

# 拉取最新镜像
docker-compose pull

# 启动容器
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看服务日志
docker-compose logs

# 跟踪服务日志
docker-compose logs -f

# 完整升级流程
docker-compose down && \
docker-compose pull && \
docker-compose up -d && \
docker image prune -f

2. Docker 容器命令 📦

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看运行中容器
docker ps

# 停止/启动/重启容器
docker stop halo halodb
docker start halo halodb
docker restart halo halodb

# 删除容器
docker rm halo halodb

# 进入容器Shell
docker exec -it halo sh
docker exec -it halo bash

# 查看容器日志
docker logs halo
docker logs halodb
docker logs -f halo
docker logs --tail 50 halodb

# 监控资源使用
docker stats halo halodb

# 查看容器详情
docker inspect halo

3. Docker 镜像管理 📀

1
2
3
4
docker images
docker rmi halohub/halo:2.20.12 mysql:8.3.0
docker image prune -f
docker image prune -a -f

🌟 启航创作,连接世界

通过本文档,你已经成功使用 Docker 部署了 Halo 博客系统,并借助 Nginx 反向代理实现了安全便捷的远程访问。现在,你可以:

✍️ 自由表达 书写所想、记录生活、分享知识,打造属于你自己的内容天地
🎨 个性定制 借助丰富的主题与插件,构建独一无二的博客风格与功能
🌍 广泛传播 通过多端适配与SEO优化,让你的内容被更多人发现与认可
🤝 互动交流 开放评论与订阅功能,与读者建立更深度的连接与对话

博客不仅是记录的工具,更是思想的载体和连接的桥梁。愿 Halo 成为你畅所欲言、展示自我的最佳伙伴,陪伴你在每一个创作的时刻和分享的瞬间。

从现在开始,发布你的第一篇博客,向世界发出你的声音吧!🚀


📌 持续关注:建议订阅 Halo 官方更新,及时获取新功能与主题插件。
🐛 反馈与支持:使用中如有问题或建议,可前往 GitHub Issues 提出。

祝你写作愉快,博客有成!🎉