
2个docker-compose
当然,我将为你创建一个尽可能不易出错的 docker-compose.yml
配置,这个配置分别为两个独立的 Halo 实例进行设置,并使用 MySQL 数据库作为后端存储。每个实例的数据库配置和端口都是独立设置的。
项目目录结构
/path/to/halo1
docker-compose.yml
halo_data
(用于存储第一个实例的数据)mysql_data1
(用于存储第一个实例的数据库数据)
/path/to/halo2
docker-compose.yml
halo_data
(用于存储第二个实例的数据)mysql_data2
(用于存储第二个实例的数据库数据)
第一个 Halo 实例的 docker-compose.yml
在 /path/to/halo1
中创建以下内容:
version: "3.8"
services:
halo1:
image: registry.fit2cloud.com/halo/halo:2.20
restart: on-failure:3
depends_on:
- halodb1
networks:
- halo_network
volumes:
- ./halo_data:/root/.halo
ports:
- "8092:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb1:3306/halo1
- --spring.r2dbc.username=halo1
- --spring.r2dbc.password=H@lo1p@ssw0rd
- --spring.sql.init.platform=mysql
- --halo.external-url=http://localhost:8092/
halodb1:
image: mysql:8.1.0
restart: on-failure:3
networks:
- halo_network
volumes:
- ./mysql_data1:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=H@lo1p@ssw0rd
- MYSQL_DATABASE=halo1
- MYSQL_USER=halo1
- MYSQL_PASSWORD=H@lo1p@ssw0rd
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-pH@lo1p@ssw0rd"]
interval: 30s
timeout: 5s
retries: 5
networks:
halo_network:
第二个 Halo 实例的 docker-compose.yml
在 /path/to/halo2
中创建以下内容:
version: "3.8"
services:
halo2:
image: registry.fit2cloud.com/halo/halo:2.20
restart: on-failure:3
depends_on:
- halodb2
networks:
- halo_network
volumes:
- ./halo_data:/root/.halo
ports:
- "8093:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb2:3306/halo2
- --spring.r2dbc.username=halo2
- --spring.r2dbc.password=H@lo2Secur3
- --spring.sql.init.platform=mysql
- --halo.external-url=http://localhost:8093/
halodb2:
image: mysql:8.1.0
restart: on-failure:3
networks:
- halo_network
volumes:
- ./mysql_data2:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=H@lo2Secur3
- MYSQL_DATABASE=halo2
- MYSQL_USER=halo2
- MYSQL_PASSWORD=H@lo2Secur3
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-pH@lo2Secur3"]
interval: 30s
timeout: 5s
retries: 5
networks:
halo_network:
注意事项
- 修改
/path/to/halo1
和/path/to/halo2
为你实际要存放文件的路径。 - 两个实例使用独立的数据库和目录,确保数据不会冲突。
- 各实例使用不同的数据库和密码配置。
- 数据卷
halo_data
和mysql_data1/2
应确保宿主机路径的正确性以防丢失数据。 - 你可能需要根据你的实际部署环境调整
halo.external-url
配置。 - 在这两个目录中分别运行
docker-compose up -d
启动两个实例。
通过这些改动,这两个实例应该能够独立运行而不会互相干扰。根据具体环境,确保适当调整配置。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 兰雀AI