配置方式
Halo 支持通过多种方式进行配置,目前 Docker Compose 部署文档 的示例是通过运行参数配置,JAR 文件部署方式 是通过配置文件进行配置。
#通过运行参数
通常我们在使用 Docker Compose 部署的时候推荐使用这种方式进行配置,配置方式为在 Docker Compose 配置文件的 command 添加对应的配置条目即可,比如:
services:
halo:
image: registry.fit2cloud.com/halo/halo-pro:2.27
...
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
- --halo.external-url=/#通过配置文件
通常我们在使用 JAR 文件部署的时候更推荐使用这种方式进行配置,配置文件名称为 application.yaml,并且需要在运行的时候通过 --spring.config.additional-location 参数指定配置文件存放的目录,运行示例:
java -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/配置示例:
~/.halo2/application.yaml
spring:
r2dbc:
url: r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
username: admin
password: 123456
sql:
init:
mode: always
platform: h2查看 JAR 文件部署步骤
完整的 JAR 文件部署文档可查阅:使用 JAR 文件部署
当然,使用 Docker Compose 部署同样支持通过这种方式配置,只需要将 application.yaml 放在工作目录的挂载目录即可,示例:
其中,docker-compose.yaml 的 Halo 服务的 volumes 应该包含 ./halo2:/root/.halo2。
#配置列表
#Halo 独有配置
通常用于生产环境的配置:
通常用于开发环境的配置:
#Web 框架本身的配置
Halo 使用了 Spring Boot 和 Spring WebFlux,完整的配置可查阅:Common Application Properties,以下将列出关于 Halo 常用的配置:
Web 服务相关:
数据库相关:
数据库配置:
#Redis 集成
仅限 Halo 付费版
限 Halo 付费版 可用。
Halo 付费版在 2.16 中新增了集成 Redis 的功能,目前提供将用户登录 Session 存入 Redis 的支持。
#配置方式
如果使用 Docker 或者 Docker Compose 部署,需要添加以下启动参数:
- --spring.data.redis.host=localhost # Redis 服务地址
- --spring.data.redis.port=6379 # Redis 服务端口
- --spring.data.redis.database=0 # Redis 数据库
- --spring.data.redis.password= # Redis 密码
- --halo.session.store-type=redis # 声明 session 存储方式为 redis,默认不配置则为 in-memory
- --halo.redis.enabled=true # 启用 Redis 服务确认 Redis 主机地址
请特别注意 spring.data.redis.host 的指向,在 Docker 容器中,可能并不是 localhost,需要确保 Halo 容器中能够正常访问到你的 Redis 服务。
Docker Compose 配置片段如下:
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo-pro:2.27
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", "/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
...
# Redis 相关配置开始
- --spring.data.redis.host=localhost # Redis 服务地址
- --spring.data.redis.port=6379 # Redis 服务端口
- --spring.data.redis.database=0 # Redis 数据库
- --spring.data.redis.password= # Redis 密码
- --halo.session.store-type=redis # 声明 session 存储方式为 redis,默认不配置则为 in-memory
- --halo.redis.enabled=true
# Redis 相关配置结束
networks:
halo_network:如果你是使用的 Docker Compose 部署 Halo,并且希望将 Redis 服务编排在一起,以下是配置示例:
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo-pro:2.27
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", "/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
# ...
# Redis 相关配置开始
- --spring.data.redis.host=redis # Redis 服务地址
- --spring.data.redis.port=6379 # Redis 服务端口
- --spring.data.redis.database=0 # Redis 数据库
- --spring.data.redis.password= # Redis 密码
- --halo.session.store-type=redis # 声明 session 存储方式为 redis,默认不配置则为 in-memory
- --halo.redis.enabled=true
# Redis 相关配置结束
# ...
# 新增的 Redis 编排
redis:
image: redis:7.2.5
networks:
halo_network:
volumes:
- ./redis-data:/data
restart: always
networks:
halo_network: