搭建Docker环境

创建容器分组

目前 Halo 官方维护的 Docker 镜像仓库,可以根据自己的需求选择合适的镜像源:

  1. 在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。

    mkdir ~/halo && cd ~/halo
  2. 创建 docker-compose.yaml (采用外部的MySQL)

    services:
      halo:
        image: halohub/halo:${VERSION}
        container_name: ${CONTAINER_NAME}
        deploy:
          resources:
            limits:
              cpus: ${CPUS}
              memory: ${MEMORY_LIMIT}
        ports:
          - ${HOST_IP}:${PORT}:8090
        volumes:
          - ${APP_PATH}/data:/root/.halo2
        environment:
          # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
          - JVM_OPTS=-Xmx256m -Xms256m
        command:
          - --spring.r2dbc.url=r2dbc:pool:${DB_TYPE}://${DB_HOST}:${DB_PORT}/${DB_NAME}
          - --spring.r2dbc.username=${DB_USERNAME}
          - --spring.r2dbc.password=${DB_PASSWORD}
          - --spring.sql.init.platform=${DB_TYPE}
          - --halo.external-url=${HALO_EXTERNAL_URL}
        healthcheck:
          interval: 30s
          retries: 5
          start_period: 30s
          test:
            - CMD
            - curl
            - -f
            - http://localhost:8090/actuator/health/readiness
          timeout: 5s
        restart: always
        labels:
          createdBy: Apps
        networks:
          - own
        extra_hosts: # Linux 系统需手动启用
          - "host.docker.internal:host-gateway" # 自动解析宿主机 IP
    networks:
      own:
        external: true
  3. 创建.env

    VERSION=2.20.15
    CONTAINER_NAME=halo
    APP_PATH=/www/dk_app/halo
    HOST_IP=127.0.0.1
    PORT=8090
    DB_TYPE=mysql
    DB_HOST=host.docker.internal # 自动解析宿主机 IP
    DB_PORT=3306
    DB_NAME=halo
    DB_USERNAME=halo
    DB_PASSWORD=
    HALO_EXTERNAL_URL=http://localhost:8090/ # 改为外部访问地址
    CPUS=1
    MEMORY_LIMIT=256MB
  4. 启动 Halo 服务

    # docker-compose.yaml和.env在同目录下可直接运行
    docker-compose up -d
    # 查看导入变量的情况(可选):使用 config 命令查看解析后的应用程序配置,该命令会将相关配置打印到终端
    docker-compose config 
    # 如果 .env 文件不在 docker-compose.yaml 文件的同级目录,可以使用 --env-file 选项指定其路径。
    docker-compose --env-file /path/to/your/.env up -d 
  5. 实时查看日志:

    docker-compose logs -f
  6. 用浏览器访问 /console 即可进入 Halo 管理页面,首次启动会进入初始化页面。

更新容器组

  1. 备份数据,可以参考 备份与恢复 进行完整备份(可选,但推荐备份)。

  2. 更新 Halo 服务

    修改 docker-compose.yaml 中配置的镜像版本。

    services:
     halo:
       image: registry.fit2cloud.com/halo/halo:2.20
    docker-compose up -d