Henry
发布于 2023-12-28 / 19 阅读
0
0

Halo 服务搭建

环境信息

  1. 系统信息: #1 SMP PREEMPT_DYNAMIC Debian 6.1.66-1 (2023-12-09) x86_64
  2. docker 版本:Docker Engine 24.0.7
  3. docker compose 版本:v2.21.0

背景信息

搭建私有网站服务,用于分享学习经验

搭建步骤

采用 docker compose 一键搭建服务

docker-compose.yml 脚本内容

version: "3"

services:
  halo-web:
    image: halohub/halo:2.11.0
    container_name: halo-web
    restart: on-failure:3
    depends_on:
      halo-db:
        condition: service_healthy
    networks:
      - prod_net
    volumes:
      - ./data/halo2:/root/.halo2
    ports:
      - "20707:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halo-db:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=o#DwN&JSa56
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

  halo-db:
    image: mysql:8.1.0
    container_name: halo-db
    restart: on-failure:3
    networks:
      - prod_net
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./data/mysqlBackup:/data/mysqlBackup
    ports:
      - "20708:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
      - MYSQL_DATABASE=halo

networks:
  prod_net:
    name: prod_net
    external: true
  • 版本信息:version: “3”
  • Docker 服务根节点:services:
    • Halo web 服务:halo-web:
      • 镜像:image: halohub/halo:2.11.0
      • 容器名:container_name: halo-web
      • 重启机制:restart: on-failure:3
      • 容器依赖:depends_on:
        • halo db:halo-db:
          • 条件检测:condition: service_healthy
      • 网络配置:networks:
        • 网络别名:- prod_net
      • 挂载卷:volumes:
        • halo数据:- ./data/halo2:/root/.halo2
      • 端口暴露:ports:
        • 端口号映射:- "20707:8090"
      • 健康检查:healthcheck:
      • 指定容器启动参数:command:
        • 数据库连接:- --spring.r2dbc.url=r2dbc:pool:mysql://halo-db:3306/halo
        • 用户名:- --spring.r2dbc.username=root
        • 密码:- --spring.r2dbc.password=o#DwN&JSa56
        • 数据库类型:- --spring.sql.init.platform=mysql
        • 外部访问URL:- --halo.external-url=http://localhost:8090/
    • Halo DB服务:halo-db:
      • 镜像:image: mysql:8.1.0
      • 容器名:container_name: halo-db
      • 重启机制:restart: on-failure:3
      • 网络配置:networks:
        • 网络别名:- prod_net
      • 指定容器启动参数:command: 
        • 默认认证方式:- --default-authentication-plugin=caching_sha2_password
        • 数据库字符集:- --character-set-server=utf8mb4
        • 数据库字符序:- --collation-server=utf8mb4_general_ci
        • 时间可以为null:- --explicit_defaults_for_timestamp=true
      • 挂载卷:volumes:
        • 数据库数据:- ./data/mysql:/var/lib/mysql
        • 备份数据:- ./data/mysqlBackup:/data/mysqlBackup
      • 端口暴露:ports:
        • 端口映射:- "20708:3306"
      • 健康检查:healthcheck:
        • 检测指令:test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
        • 间隔时间:interval: 3s
        • 重试次数:retries: 5
        • 容器初始化时间:start_period: 30s
      • 环境变量:environment:
        • 数据库密码: - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
        • 数据库名:- MYSQL_DATABASE=halo
  • 网络定义根节点:networks:
    • 网络别名:prod_net:
      • 网络实际名称:name: prod_net
      • 外部网络:external: true

请根据自己的实际需求进行更新。

启动容器

sudo docker compose up -d

查看容器

sudo docker container ls -a
6254dd766729   halohub/halo:2.11.0                                                    "sh -c 'java ${JVM_O…"    2 hours ago    Up 2 hours (healthy)   0.0.0.0:20707->8090/tcp, :::20707->8090/tcp                               halo-web
b8939bb280f5   mysql:8.1.0                                                            "docker-entrypoint.s…"    2 hours ago    Up 2 hours (healthy)   33060/tcp, 0.0.0.0:20708->3306/tcp, :::20708->3306/tcp                    halo-db

如果第一次启动时,halo-web是停止的状态,可能是数据库启动过慢,无法连接导致的,可以尝试重启容器 docker restart halo-web;如重启后还未解决问题,需查看具体报错处理。

访问halo并初始化

URL: http://localhost:20707

按界面提示操作即可~~~


评论