当然,以下是第三个 Halo 实例的 docker-compose.yml 配置文件,请确保以独立的目录和配置运行这个 Halo 实例:

第三个 Halo 实例的 docker-compose.yml

version: "3.8"

services:
  halo3:
    image: registry.fit2cloud.com/halo/halo:2.20
    restart: on-failure:3
    depends_on:
      - halodb3
    networks:
      - halo_network
    volumes:
      - ./halo_data:/root/.halo     # 使用第三个实例的数据目录
    ports:
      - "8094: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://halodb3:3306/halo3   # 修改: 调整数据库连接和名称
      - --spring.r2dbc.username=halo3                             # 修改: 设置特定实例的数据库用户名
      - --spring.r2dbc.password=H@lo3Uniqu3                       # 修改: 为第三个实例提供数据库密码
      - --spring.sql.init.platform=mysql
      - --halo.external-url=http://localhost:8094/                # 修改: 设置不同的外部访问URL

  halodb3:
    image: mysql:8.1.0
    restart: on-failure:3
    networks:
      - halo_network
    volumes:
      - ./mysql_data3:/var/lib/mysql     # 使用第三个实例的数据库持久化路径
    environment:
      - MYSQL_ROOT_PASSWORD=H@lo3Uniqu3  # 修改: 设置MySQL根密码和应用密码
      - MYSQL_DATABASE=halo3             # 修改: 为第三个实例指定数据库名称
      - MYSQL_USER=halo3                 # 修改: 为第三个实例设置数据库用户名
      - MYSQL_PASSWORD=H@lo3Uniqu3       # 修改: 为第三个实例设置用户密码
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-pH@lo3Uniqu3"]
      interval: 30s
      timeout: 5s
      retries: 5

networks:
  halo_network:

关键修改点

  1. 端口映射

    • ports: "8094:8090":主机的8094端口映射到容器的8090端口。这个端口是每个实例要独立配置的,以此来区分服务。
  2. 服务及数据库命名

    • halo3halodb3:为新的服务和数据库选择了新的名称,确保与之前的实例区分开来。
  3. 数据库设置

    • 数据库名称、用户名、和密码均为新的独立值,以避免与其他实例冲突。
  4. 数据卷路径

    • ./halo_data./mysql_data3:为新的实例设置独立的持久化存储路径。
  5. 外部访问URL

    • --halo.external-url=http://localhost:8094/:这是主机上的访问地址,你可能根据实际需要进一步配置。

启动步骤

  • 确认将此 docker-compose.yml 放在用于第三个实例的独立目录中。

  • 在该目录中运行:

    docker-compose up -d
    

确保这些设置按需修改以适应你的实际部署环境,每个实例运行在独立的配置和容器环境中,避免相互干扰。希望这个配置可以完美适应你的需求!