Docker 部署 Halo 博客系统-MySQL ✨

📋 目录导航
🎯 项目简介
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
EOF
|
2. 拉取镜像并启动容器 🚀
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. 首次访问设置 🎯
- 打开浏览器访问: http://你的服务器IP:8090/console
- 按照页面提示完成初始设置:
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_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;
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
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 提出。
祝你写作愉快,博客有成!🎉
Docker 部署 Halo 博客系统-MySQL ✨