Administrator
发布于 2026-01-09 / 0 阅读
0
0

群晖docker compose安装个人博客halo

我使用的是mysql数据库结合halo的配置。先创建2个文件夹/volume1/docker/halo/halo2,/volume1/docker/halo/mysql。已下是docker compose代码。代码做了数据持久化操作。

SQL默认在容器中使用,没有映射端口。

version: "3.8"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.22
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      - halo_network
    ports:
      - "8090:8090"//halo的使用端口
    volumes:
      - /volume1/docker/halo/halo2:/root/.halo2
    environment:
      - JVM_OPTS=-Xmx512m -Xms256m//内存分配
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=halo//sql的用户名
      - --spring.r2dbc.password=Halo123456//sql的密码
      - --spring.sql.init.platform=mysql
      - --halo.external-url=https://blog.xxxxxx.xxxx:xxx//替换成自己的域名网址,有端口号的修改成端口号

  halodb:
    image: mysql:8.0.36
    container_name: halo-mysql
    restart: on-failure:3
    networks:
      - halo_network
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      # ❌ 不再指定 mysql_native_password
    volumes:
      - /volume1/docker/halo/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Halo123456
      - MYSQL_DATABASE=halo
      - MYSQL_USER=halo
      - MYSQL_PASSWORD=Halo123456
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 40s

networks:
  halo_network:
    driver: bridge

初始化需要3-5分钟,内网可以测试:群晖IP+8090端口访问。测试通过后可以使用lucky反代进行外网测试。


评论