我使用的是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反代进行外网测试。