Docker 部署 Halo 博客系统-PostgreSQL ✨
📋 目录导航
🎯 项目简介
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
|
mkdir -p /mnt/mydisk/home/halo && cd $_ && \
cat > docker-compose.yml <<'EOF'
services:
halo:
image: registry.fit2cloud.com/halo/halo:2
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./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
environment:
# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: postgres:17.6
container_name: halodb
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
name: halo_network
driver: bridge
# Halo博客_后台地址:http://10.10.10.245:8090/console
EOF
|
2. 拉取镜像并启动容器 🚀
3. PostgreSQL 版本管理与验证 🔍
- 如需使用其他版本的
PostgreSQL
镜像,可以使用以下命令查询可用版本标签:
1
2
|
curl -sS "https://registry.hub.docker.com/v2/repositories/library/postgres/tags/?page_size=100" \
| jq -r '.results[].name' | grep -E '^[0-9]+(\.[0-9]+)?$' | sort -V
|
- 部署完成后,可以使用以下命令验证
PostgreSQL
版本:
1
|
docker exec -it halodb pg_config --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 证书
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
提出。
祝你写作愉快,博客有成!🎉