1.使用git下载Halo源码

git clone https://gitee.com/halo-dev/halo.git

2.创建halo数据库,使用application目录下的脚本创建表

create table if not exists extensions
(
    name    varchar(255) not null COLLATE utf8mb4_bin,
    data    longblob,
    version bigint,
    primary key (name)
);

3.修改application.yml文件中的数据库连接,比如使用mysql

  r2dbc:
    url: r2dbc:pool:mysql://43.138.130.118:3306/halo
    username: root
    password: 123456
  sql:
    init:
      mode: always
      platform: mysql

4.下载前端依赖并编译(需要安装node.js\pnpm)

cd ui

pnpm install

pnpm build:packages

pnpm build

5.编译后端并生成jar包

.\gradlew.bat :application:clean :application:bootJar

6.准备docker-compose.yml

services:
    mysql:
        image: mysql:8.0
        container_name: halo-mysql
        command:
            - --default-authentication-plugin=mysql_native_password
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_unicode_ci
        environment:
            MYSQL_ROOT_PASSWORD: 123456
            MYSQL_DATABASE: myhalo
            MYSQL_USER: halo
            MYSQL_PASSWORD: 123456
            TZ: Asia/Shanghai
        volumes:
            - mysql_data:/var/lib/mysql
            - ./mysql/conf.d:/etc/mysql/conf.d
            - ./mysql/logs:/var/log/mysql
        ports:
            - "3306:3306"
        restart: unless-stopped
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p123456"]
            interval: 30s
            timeout: 10s
            retries: 5
            start_period: 60s
        networks:
            - halo-network

    myhalo:
        image: my-halo:latest
        container_name: my-halo
        depends_on:
            mysql:
                condition: service_healthy
        environment:
            - JVM_OPTS=-Xmx256m -Xms256m
        command:
            - --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo
            - --spring.r2dbc.username=root
            # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
            - --spring.r2dbc.password=halo123456
            - --spring.sql.init.platform=mysql
            # 外部访问地址,请根据实际需要修改
            - --halo.external-url=http://你的服务器IP:8090/
            - --server.port=8090
        volumes:
            - my_halo_data:/root/.halo2
            - ./myhalo/backup:/root/.halo2/backup
            - ./myhalo/logs:/root/.halo2/logs
        ports:
            - "8090:8090"
        restart: unless-stopped
        networks:
            - halo-network

volumes:
    my_halo_data:
        driver: local
    mysql_data:
        driver: local

networks:
    halo-network:
        driver: bridge

6.使用alibaba Clould Toolkit一键打包并发布到服务器