Halo 博客 Docker Compose 模版(PostgreSQL + 1Panel)

_

模版概览

这个编排文件主要做了三件事:

  1. 启动 Halo 容器(版本为 2.25.4,后续使用要记得更新版本号,我直接写 latest 会默认拉下来老版本的)。

  2. 连接外部 PostgreSQL 数据库(没有把数据库放在同一个容器里,而是通过 1Panel 的网络直接连接;如果脱离 1Panel 环境,需将 networks 部分去掉或改为自定义 bridge 网络,并修改数据库地址为实际 IP/ 主机名)。

  3. 映射持久化数据(所有配置和附件都保存在宿主机的 ./halo2 目录中)。

version: "3.8"

services:
  halo:
    #这里使用的是社区版,不是pro版,预装的东西少,感觉比pro版流畅一点
    image: halohub/halo:2.25.4
    container_name: halo
    restart: always
    environment:
      - JVM_OPTS=-Xmx128m -Xms128m
      - TZ=Asia/Shanghai
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    networks:
      - 1panel-network
// [!code fold:start]
    command:
      # PostgreSQL 连接配置
      - --spring.r2dbc.driver=io.asyncer.r2dbc.mysql.MySqlConnectionFactoryProvider
      # 此处的1Panel-postgresql-kIqo需要替换成postgresql的实际地址 
      - --spring.r2dbc.url=r2dbc:postgresql://1Panel-postgresql-kIqo:5432/halo2
      - --spring.r2dbc.username=halo2
      - --spring.r2dbc.password=你的数据库密码
      - --spring.sql.init.platform=postgresql
      - --halo.external-url=https://www.gittime.cn
      - --server.port=8090

networks:
  1panel-network:
    external: true

细节解释

1. 内存控制(JVM_OPTS)

  • -Xmx128m 最大堆内存,-Xms128m 初始堆内存 (Xmx>=Xms

  • 128MB 对个人博客足够,避免低配 VPS 内存溢出

  • 访问量大时可适当调高

2. 数据库独立(外部 PostgreSQL)

  • 连接 1Panel 管理的 PostgreSQL 实例,而非内置数据库

  • 容器与数据库解耦,容器挂掉数据不丢

  • 生产环境推荐使用独立数据库

  • 注意:连接串中的 1Panel-postgresql-kIqo 是 1Panel 默认网络名称,重建后需更新

3. 网络模式(1panel-network)

  • external: true 表示使用已存在的 1Panel 桥接网络

  • 方便不同容器间通过容器名通信

4. 外部访问地址

  • --halo.external-url=https://www.gittime.cn 影响站点地图、RSS 和链接复制

  • 更换域名或启用 HTTPS 时务必同步更新


使用场景与注意事项

适用场景:

  • 初次部署

    • 1Panel 应用商店安装后,替换 compose 文件做精细化配置

    • 直接使用 docker 部署,需要改一些参数(主要就是网络)

  • 迁移服务器:打包 halo2 目录 + compose 文件,新服务器 docker compose up -d 即可恢复

注意事项:

  • 密码明文spring.r2dbc.password 直接写在文件中。生产环境建议用环境变量或 Docker Secret 注入,或确保文件仅限本机访问

  • 端口映射8090:8090 默认端口,反向代理时确保端口未被占用

Hello Halo2026-07-28
AdGuard Home Docker Compose 模版2026-07-29

评论区