安装背景

  • 我原本vps上已经安装了一个halo实例
  • 我想在同一台VPS上安装第2个halo实例,与第一个halo实例分别保持独立运行
  • 我在尝试安装第二个实例后出现了502报错,我也检查过我的第二个实例的docker-compose.yml文件
    实例名称、数据库、路径、端口等都有分别设置,目前找不到原因特来求助
  • 我第一个实例使用docker-compose方式安装,以下是docker-compose.yml
    
    services:
      halo:
        image: halohub/halo:2.6.0
        container_name: halo
        restart: on-failure:3
        depends_on:
          halodb:
            condition: service_healthy
        networks:
          halo_network:
        volumes:
          - ./:/root/.halo2
        ports:
          - "8090:8090"
        command:
          - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
          - --spring.r2dbc.username=root
          # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
          - --spring.r2dbc.password=@@@@@@
          - --spring.sql.init.platform=mysql
          # 外部访问地址,请根据实际需要修改
          - --halo.external-url=https://www.@@@@.com
          # 初始化的超级管理员用户名
          - --halo.security.initializer.superadminusername=@@@@
          # 初始化的超级管理员密码
          - --halo.security.initializer.superadminpassword=@@@@
    
      halodb:
        image: mysql:8.0.31
        container_name: halodb
        restart: on-failure:3
        networks:
          halo_network:
        command: 
          - --default-authentication-plugin=mysql_native_password
          - --character-set-server=utf8mb4
          - --collation-server=utf8mb4_general_ci
          - --explicit_defaults_for_timestamp=true
        volumes:
          - ./mysql:/var/lib/mysql
          - ./mysqlBackup:/data/mysqlBackup
        ports:
          - "3306"
        healthcheck:
          test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
          interval: 3s
          retries: 5
          start_period: 30s
        environment:
          # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
          - MYSQL_ROOT_PASSWORD=@@@@@@
          - MYSQL_DATABASE=halo
    
    networks:
      halo_network:

    请各位大佬帮我对照以上docker-compose.yml文件帮我修改出安装第二个实例的compose文件,万分感谢

大帅比
端口我试了,原有halo实例的端口ports: - "8090:8090" 准备安装的haloports: - "8091:8090"防火墙也放行了8091

同一台vps启动两个halo容器我也试过,基本上更改端口映射、容器名、数据库名、数据库用户和数据库密码。其他貌似也不用怎么改。。。但是你如果第二个halo,引用第一个docker compose的halodb的话,比较容易出错的地方是忘记网络隔离。
我觉得的db单独用一个docker compose启动,把3306映射到宿主机上。然后另外两个halo用IP+Port形式连接数据库。基本上就没啥问题了

    zyy2477 端口映射、容器名、数据库名、数据库用户和数据库密码

    • 这些我都操作了

    zyy2477 把3306映射到宿主机上。然后另外两个halo用IP+Port形式连接数据库

    • 这一步没必要吧?是在同一台VPS上啊,3306是容器端口,宿主机端口不冲突3306应该不会影响吧?我试试

    zyy2477 忘记网络隔离

    • 这一步到是提醒我了,我是不是得修改networks: halo_network:这项的参数?

      Camellia 默认一个compose网络是会跟其他compose网络隔离的。最简单方法就是把mysql的3306映射到宿主机上一起使用

        8 天 后

        zyy2477

        • 谢谢你的方法,有空闲的VPS我也会尝试下
        • 我使用了以下方法实现
          version: '3'
          services:
            halo_AAAAAA:    #<<<<-----修改
              image: halohub/halo:2.10
              container_name: halo_download    #<<<<-----修改
              restart: on-failure:3
              depends_on:
                halodb:
                  condition: service_healthy
              networks:
                halo_network:
              volumes:
                - ./halo_AAAAAA:/root/.halo2    #<<<<-----修改
              ports:
                - "8091:8090"    ##<<<<-----修改
              command:
                - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo_AAAAAA #<<<<-----修改
                - --spring.r2dbc.username=root
                # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
                - --spring.r2dbc.password=@@@@@@    #<<<<-----修改
                - --spring.sql.init.platform=mysql
                # 外部访问地址,请根据实际需要修改
                - --halo.external-url=https://@@@@@@@@.com  #<<<<-----修改
                # 初始化的超级管理员用户名
                - --halo.security.initializer.superadminusername=@@@@@  #<<<<-----修改
                # 初始化的超级管理员密码
                - --halo.security.initializer.superadminpassword=@@@@@  #<<<<-----修改
          
            halodb:
              image: mysql:8.0.31
              container_name: halodb_AAAAA   #<<<<-----修改
              restart: on-failure:3
              networks:
                halo_network:
              command: 
                - --default-authentication-plugin=mysql_native_password
                - --character-set-server=utf8mb4
                - --collation-server=utf8mb4_general_ci
                - --explicit_defaults_for_timestamp=true
              volumes:
                - ./mysql:/var/lib/mysql
                - ./mysqlBackup:/data/mysqlBackup
              ports:
                - "3307:3306"
              healthcheck:
                test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
                interval: 3s
                retries: 5
                start_period: 30s
              environment:
                # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
                - MYSQL_ROOT_PASSWORD=admin@@@@@@   #<<<<-----修改
                - MYSQL_DATABASE=halo_AAAAAAA       #<<<<-----修改
          
          networks:
            halo_network: