本文环境
1.已安装宝塔面板
2.已在宝塔面板中安装docker、docker compose
3.使用在宝塔面板创建的外部数据库(MySQL)
其他环境请参考官方的安装指南
安装halo
1.创建数据目录(Halo产生的数据会保存在这个目录)
以目录“/www/wwwroot/_halo”为例,可自行修改
使用以下命令,或者直接在宝塔面板→文件管理中创建(方法殊途同归,效果一样就行)
cd /www/wwwroot
mkdir -p "_halo"

2.添加容器编排
宝塔面板→docker→容器编排→添加容器编排,等待容器编排完成
compose内容如下。请自行修改/确认以下部分:
image,image: registry.fit2cloud.com/halo/halo:<要安装的大版本号或小版本号>,版本更新记录:https://releases.halo.run/
volumes,- <之前创建的数据目录路径>:/root/.halo2
ports,- "127.0.0.1:<端口映射(宿主机端口)>:8090",为了安全,此配置只能本地访问,需要反代出来,要允许外部访问,可去掉127.0.0.1:
environment,- JVM_OPTS=-Xmx512m -Xms512m,内存较小可改为256m
command,- --spring.r2dbc.url=r2dbc:pool:mysql://host.docker.internal:3306/<外部数据库名>
command,- --spring.r2dbc.username=<外部数据库用户名>
command,- --spring.r2dbc.password=<外部数据库密码>
services:
halo:
container_name: halo
image: registry.fit2cloud.com/halo/halo:2.24
restart: on-failure:3
volumes:
- /www/wwwroot/_halo:/root/.halo2
ports:
- "127.0.0.1:60927:8090"
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
- JVM_OPTS=-Xmx512m -Xms512m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://host.docker.internal:3306/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=
- --spring.sql.init.platform=mysql
3.设置宝塔面板数据库权限
宝塔面板创建的数据库访问权限默认为本地服务器,数据库访问会报错,需要修改一下数据库权限
根据halo容器的网段IP,设置数据库访问权限,例如:172.20.0.%
如果服务器数据库端口不对公网开放,可简单设置为172.%.%.%,不用去看容器IP段

如何查看容器的网段IP:
执行以下命令查看docker容器ip地址和端口映射情况,在输出中找到halo容器的网段IP:
docker inspect -f='{{.Name}} {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{.HostConfig.PortBindings}}' $(docker ps -aq)
或者在宝塔面板→docker→网络中查看:

4.重启/启动容器编排,查看日志,确认数据库是否成功连接,是否有报错
5.配置反向代理
使用Nginx、Caddy等配置反向代理、绑定域名等
上游服务器地址为:http://127.0.0.1:60927(docker-compose.yaml端口映射配置中的宿主机端口)
具体配置可参考官方的安装指南
6.初始化设置
浏览器访问 站点地址/console 进入Halo管理页面,完成初始化设置
升级halo
后续升级halo,修改配置文件docker-compose文件内容中的image版本号,保存重启容器编排即可
版本更新记录:https://releases.halo.run/

评论区