返回列表 发布新帖

[玩法教程] 【docker compose】halo

1028 0
发表于 2025-10-23 12:19:24 | 查看全部 阅读模式 IP:–贵州–遵义

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. # 定义所有服务(容器)的配置
  2. services:
  3.   # 定义名为 halo 的服务(Halo 博客应用)
  4.   halo:
  5.     # 指定运行的 Docker 镜像,这里使用 registry.fit2cloud.com 仓库的 halo:2.21 版本
  6.     image: registry.fit2cloud.com/halo/halo:2.21
  7.    
  8.     # 容器重启策略:当容器因错误退出时最多重启 3 次(非手动停止的情况)
  9.     restart: on-failure:3
  10.    
  11.     # 依赖关系:halo 服务需等待 halodb 服务"健康检查通过"后才启动
  12.     depends_on:
  13.       halodb:
  14.         condition: service_healthy
  15.    
  16.     # 将容器加入名为 halo_network 的网络,实现与其他服务的网络互通
  17.     networks:
  18.       halo_network:
  19.    
  20.     # 数据卷挂载:将宿主机当前目录下的 halo2 文件夹挂载到容器内的 /root/.halo2 目录
  21.     # 作用:持久化 Halo 的配置、文章等数据,容器删除后数据不丢失
  22.     volumes:
  23.       - ./halo2:/root/.halo2
  24.    
  25.     # 端口映射:将宿主机的 8090 端口映射到容器内的 8090 端口
  26.     # 外部可通过 http://宿主机IP:8090 访问 halo 服务
  27.     ports:
  28.       - "8090:8090"
  29.    
  30.     # 健康检查配置:监测 halo 服务是否正常运行
  31.     healthcheck:
  32.       # 检查命令:通过 curl 请求 halo 的健康检查接口(就绪探针)
  33.       test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
  34.       interval: 30s        # 检查间隔:每 30 秒执行一次健康检查
  35.       timeout: 5s          # 超时时间:超过 5 秒未响应则视为检查失败
  36.       retries: 5           # 重试次数:连续 5 次失败则判定服务不健康
  37.       start_period: 30s    # 启动等待时间:容器启动后 30 秒再开始健康检查(避免启动中误判)
  38.    
  39.     # 环境变量配置
  40.     environment:
  41.       # JVM 运行参数:设置堆内存初始值和最大值均为 256MB,可根据服务器配置调整
  42.       - JVM_OPTS=-Xmx256m -Xms256m
  43.    
  44.     # 容器启动命令:覆盖镜像默认命令,用于配置数据库连接等参数
  45.     command:
  46.       # 指定 PostgreSQL 数据库连接地址(通过网络别名 halodb 访问数据库服务)
  47.       - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
  48.       # 数据库用户名(需与下方 halodb 的 POSTGRES_USER 一致)
  49.       - --spring.r2dbc.username=halo
  50.       # 数据库密码(需与下方 halodb 的 POSTGRES_PASSWORD 一致)
  51.       - --spring.r2dbc.password=openpostgresql
  52.       # 指定数据库类型为 PostgreSQL(初始化 SQL 脚本时使用)
  53.       - --spring.sql.init.platform=postgresql
  54.       # Halo 外部访问地址(用户实际访问的 URL,需根据部署环境修改,如域名)
  55.       - --halo.external-url=http://localhost:8090/

  56.   # 定义名为 halodb 的服务(PostgreSQL 数据库,用于存储 Halo 数据)
  57.   halodb:
  58.     # 指定运行的 Docker 镜像:PostgreSQL 15.4 版本
  59.     image: postgres:15.4
  60.    
  61.     # 容器重启策略:当容器因错误退出时最多重启 3 次
  62.     restart: on-failure:3
  63.    
  64.     # 将容器加入 halo_network 网络,与 halo 服务互通
  65.     networks:
  66.       halo_network:
  67.    
  68.     # 数据卷挂载:将宿主机当前目录下的 db 文件夹挂载到容器内的 /var/lib/postgresql/data
  69.     # 作用:持久化 PostgreSQL 数据库数据,容器删除后数据不丢失
  70.     volumes:
  71.       - ./db:/var/lib/postgresql/data
  72.    
  73.     # 健康检查配置:监测 PostgreSQL 数据库是否正常运行
  74.     healthcheck:
  75.       # 检查命令:使用 PostgreSQL 自带工具 pg_isready 检测数据库就绪状态
  76.       test: [ "CMD", "pg_isready" ]
  77.       interval: 10s        # 检查间隔:每 10 秒执行一次
  78.       timeout: 5s          # 超时时间:5 秒未响应视为失败
  79.       retries: 5           # 连续 5 次失败则判定服务不健康
  80.    
  81.     # PostgreSQL 环境变量配置(初始化数据库时使用)
  82.     environment:
  83.       - POSTGRES_PASSWORD=openpostgresql  # 数据库超级用户密码
  84.       - POSTGRES_USER=halo                # 创建的数据库用户名(供 Halo 使用)
  85.       - POSTGRES_DB=halo                  # 创建的数据库名(供 Halo 使用)
  86.       - PGUSER=halo                       # 指定默认操作的数据库用户

  87. # 定义网络配置
  88. networks:
  89.   # 创建名为 halo_network 的自定义网络,用于 halo 和 halodb 服务之间的内部通信
  90.   # 默认使用 bridge 驱动,服务间可通过服务名(如 halodb)互相访问
  91.   halo_network:
复制代码

评论

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2026 绿联NAS私有云社区 版权所有 All Rights Reserved. 粤公网安备44030002002555号| 粤ICP备12028978号
关灯 在本版发帖
联系技术支持
返回顶部
快速回复 返回顶部 返回列表