# 定义所有服务(容器)的配置
services:
# 定义名为 halo 的服务(Halo 博客应用)
halo:
# 指定运行的 Docker 镜像,这里使用 registry.fit2cloud.com 仓库的 halo:2.21 版本
image: registry.fit2cloud.com/halo/halo:2.21
# 容器重启策略:当容器因错误退出时最多重启 3 次(非手动停止的情况)
restart: on-failure:3
# 依赖关系:halo 服务需等待 halodb 服务"健康检查通过"后才启动
depends_on:
halodb:
condition: service_healthy
# 将容器加入名为 halo_network 的网络,实现与其他服务的网络互通
networks:
halo_network:
# 数据卷挂载:将宿主机当前目录下的 halo2 文件夹挂载到容器内的 /root/.halo2 目录
# 作用:持久化 Halo 的配置、文章等数据,容器删除后数据不丢失
volumes:
- ./halo2:/root/.halo2
# 端口映射:将宿主机的 8090 端口映射到容器内的 8090 端口
# 外部可通过 http://宿主机IP:8090 访问 halo 服务
ports:
- "8090:8090"
# 健康检查配置:监测 halo 服务是否正常运行
healthcheck:
# 检查命令:通过 curl 请求 halo 的健康检查接口(就绪探针)
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s # 检查间隔:每 30 秒执行一次健康检查
timeout: 5s # 超时时间:超过 5 秒未响应则视为检查失败
retries: 5 # 重试次数:连续 5 次失败则判定服务不健康
start_period: 30s # 启动等待时间:容器启动后 30 秒再开始健康检查(避免启动中误判)
# 环境变量配置
environment:
# JVM 运行参数:设置堆内存初始值和最大值均为 256MB,可根据服务器配置调整
- JVM_OPTS=-Xmx256m -Xms256m
# 容器启动命令:覆盖镜像默认命令,用于配置数据库连接等参数
command:
# 指定 PostgreSQL 数据库连接地址(通过网络别名 halodb 访问数据库服务)
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
# 数据库用户名(需与下方 halodb 的 POSTGRES_USER 一致)
- --spring.r2dbc.username=halo
# 数据库密码(需与下方 halodb 的 POSTGRES_PASSWORD 一致)
- --spring.r2dbc.password=openpostgresql
# 指定数据库类型为 PostgreSQL(初始化 SQL 脚本时使用)
- --spring.sql.init.platform=postgresql
# Halo 外部访问地址(用户实际访问的 URL,需根据部署环境修改,如域名)
- --halo.external-url=http://localhost:8090/
# 定义名为 halodb 的服务(PostgreSQL 数据库,用于存储 Halo 数据)
halodb:
# 指定运行的 Docker 镜像:PostgreSQL 15.4 版本
image: postgres:15.4
# 容器重启策略:当容器因错误退出时最多重启 3 次
restart: on-failure:3
# 将容器加入 halo_network 网络,与 halo 服务互通
networks:
halo_network:
# 数据卷挂载:将宿主机当前目录下的 db 文件夹挂载到容器内的 /var/lib/postgresql/data
# 作用:持久化 PostgreSQL 数据库数据,容器删除后数据不丢失
volumes:
- ./db:/var/lib/postgresql/data
# 健康检查配置:监测 PostgreSQL 数据库是否正常运行
healthcheck:
# 检查命令:使用 PostgreSQL 自带工具 pg_isready 检测数据库就绪状态
test: [ "CMD", "pg_isready" ]
interval: 10s # 检查间隔:每 10 秒执行一次
timeout: 5s # 超时时间:5 秒未响应视为失败
retries: 5 # 连续 5 次失败则判定服务不健康
# PostgreSQL 环境变量配置(初始化数据库时使用)
environment:
- POSTGRES_PASSWORD=openpostgresql # 数据库超级用户密码
- POSTGRES_USER=halo # 创建的数据库用户名(供 Halo 使用)
- POSTGRES_DB=halo # 创建的数据库名(供 Halo 使用)
- PGUSER=halo # 指定默认操作的数据库用户
# 定义网络配置
networks:
# 创建名为 halo_network 的自定义网络,用于 halo 和 halodb 服务之间的内部通信
# 默认使用 bridge 驱动,服务间可通过服务名(如 halodb)互相访问
halo_network:
© 版权声明
尊重原创 · 保护知识产权
原创保护:本站所有原创内容均受著作权法保护,未经许可禁止转载或商业使用。
转载规范:如需转载,请注明出处并保留原文链接,不得删改内容。
免责声明:本站仅提供学习交流平台,内容观点不代表本站立场。
侵权处理:如发现侵权内容,请及时联系我们(jimhuhu1125@126.com),将在第一时间处理。
THE END








