1. 环境配置

 mkdir -p /docker/halo /docker/mysql-halo/data /docker/mysql-halo/conf /docker/mysql-halo/log /docker/mysql-halo/mysqlBackup && \
 tee /docker/halo/.env <<-'EOF'
 YOURLS_SITE=${YOURLS_SITE}  # 需替换为自己的域名
 ​
 MYSQL_ROOT_PASSWORD=<MYSQL_ROOT_PASSWORD>
 MYSQL_DATABASE=<MYSQL_DATABASE>
 MYSQL_USER=<MYSQL_USER>
 MYSQL_PASSWORD=<MYSQL_PASSWORD>
 EOF

2. 编辑 docker-compose.yml

 tee /docker/halo/docker-compose.yml <<-'EOF'
 services:
   halo:
     image: halohub/halo:2
     container_name: halo
     restart: unless-stopped
     command:
       - --spring.r2dbc.url=r2dbc:pool:mysql://mysql-halo:3306/${MYSQL_DATABASE}
       - --spring.r2dbc.username=${MYSQL_USER}
       - --spring.r2dbc.password=${MYSQL_PASSWORD}
       - --spring.sql.init.platform=mysql
       - --halo.external-url=${YOURLS_SITE}
     volumes:
       - /docker/halo:/root/.halo2
     depends_on:
       - mysql-halo
     healthcheck:
       test: ["CMD", "curl", "-f", "http://halo:8090/actuator/health/readiness"]
       interval: 30s
       timeout: 5s
       retries: 5
       start_period: 30s
     networks:
       - internal
     
   mysql-halo:
     image: mysql:8.1.0
     container_name: mysql-halo
     restart: unless-stopped
     environment:
       MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
       MYSQL_DATABASE: ${MYSQL_DATABASE}
       MYSQL_USER: ${MYSQL_USER}
       MYSQL_PASSWORD: ${MYSQL_PASSWORD}
     command: 
       - --default-authentication-plugin=mysql_native_password
       - --character-set-server=utf8mb4
       - --collation-server=utf8mb4_general_ci
       - --explicit_defaults_for_timestamp=true
     volumes:
       - /docker/mysql-halo/data:/var/lib/mysql
       - /docker/mysql-halo/log:/var/log/mysql:rw
       - /docker/mysql-halo/conf/:/etc/mysql/conf.d
       - /docker/mysql-halo/mysqlBackup:/data/mysqlBackup
     healthcheck:
       test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
       interval: 3s
       retries: 5
       start_period: 30s
     networks:
       - internal
 ​
 networks:
   internal:
     external: true
     name: internal
 EOF

3. 运行 docker compose

 cd /docker/halo/ && \
 docker compose up -d

4. 其他

 # backup
 cd /docker/halo/ && \
 docker compose stop && \ 
 docker compose rm -f && \
 docker rmi halohub/halo:2 && \
 docker rmi mysql:8.1.0 && \
 rm -rf /docker/halo
 # 查看日志
 docker compose logs

&NPM

  • Domain Names

    <域名>

  • Forward Hostname / IP

    halo

  • Forward Port

    8090