docker-compose.yaml 10.5 KB
name: ruoyi-vue-pro

volumes:
    mysql: { }
    postgres: { }
    sqlserver: { }
    dm8: { }
    kingbase: { }
    opengauss: { }
    highgo: { }
    oceanbase: { }
    oceanbase_config: { }
    tidb_pd: { }
    tidb_tikv: { }
    mogdb: { }

services:
    mysql:
        image: mysql:8.0.33
        restart: unless-stopped
        environment:
            TZ: Asia/Shanghai
            MYSQL_ROOT_PASSWORD: 123456
            MYSQL_DATABASE: ruoyi-vue-pro
        ports:
            - "3306:3306"
        volumes:
            - mysql:/var/lib/mysql/
            # 注入初始化脚本
            - ./mysql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/init.sql:ro
        command:
            --default-authentication-plugin=mysql_native_password
            --character-set-server=utf8mb4
            --collation-server=utf8mb4_general_ci
            --explicit_defaults_for_timestamp=true
            --lower_case_table_names=1

    postgres:
        image: postgres:14.2
        restart: unless-stopped
        environment:
            POSTGRES_USER: root
            POSTGRES_PASSWORD: 123456
            POSTGRES_DB: ruoyi-vue-pro
        ports:
            - "5432:5432"
        volumes:
            - postgres:/var/lib/postgresql/data
            # 注入初始化脚本
            - ../postgresql/quartz.sql:/docker-entrypoint-initdb.d/quartz.sql:ro
            - ../postgresql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/ruoyi-vue-pro.sql:ro

    oracle:
        image: gvenzl/oracle-xe:18-slim-faststart
        restart: unless-stopped
        environment:
            ## 登录信息 SID: XE user: system password: oracle
            ORACLE_PASSWORD: oracle
        ports:
            - "1521:1521"
        volumes:
            - ../oracle/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            # 创建app用户: ROOT/123456@//localhost/XEPDB1
            - ./oracle/1_create_user.sql:/docker-entrypoint-initdb.d/1_create_user.sql:ro
            - ./oracle/2_create_schema.sh:/docker-entrypoint-initdb.d/2_create_schema.sh:ro

    oracle_m1:
      image: einslib/oracle-19c:19.3.0-ee-slim-faststart
      restart: unless-stopped
      environment:
        ## 登录信息 SID: FREE user: system password: oracle
        ORACLE_PASSWORD: oracle
      ports:
        - "1521:1521"
      volumes:
        - ../oracle/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
        # 创建app用户: ROOT/123456@//localhost/XEPDB1
        - ./oracle/1_create_user.sql:/docker-entrypoint-initdb.d/1_create_user.sql:ro
        - ./oracle/2_create_schema.sh:/docker-entrypoint-initdb.d/2_create_schema.sh:ro

    sqlserver:
        image: mcr.microsoft.com/mssql/server:2017-latest
        restart: unless-stopped
        environment:
            TZ: Asia/Shanghai
            ACCEPT_EULA: "Y"
            SA_PASSWORD: "Yudao@2024"
        ports:
            - "1433:1433"
        volumes:
            - sqlserver:/var/opt/mssql
            - ../sqlserver/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            # docker compose exec sqlserver bash /tmp/create_schema.sh
            - ./sqlserver/create_schema.sh:/tmp/create_schema.sh:ro

    dm8:
        # docker load -i dm8_20240715_x86_rh6_rq_single.tar
        image: dm8_single:dm8_20240715_rev232765_x86_rh6_64
        restart: unless-stopped
        environment:
            PAGE_SIZE: 16
            LD_LIBRARY_PATH: /opt/dmdbms/bin
            EXTENT_SIZE: 32
            BLANK_PAD_MODE: 1
            LOG_SIZE: 1024
            UNICODE_FLAG: 1
            LENGTH_IN_CHAR: 1
            INSTANCE_NAME: dm8_test
        ports:
            - "5236:5236"
        volumes:
            - dm8:/opt/dmdbms/data
            - ../dm/ruoyi-vue-pro-dm8.sql:/tmp/schema.sql:ro

    kingbase:
        image: kingbase_v009r001c001b0025_single_x86:v1
#        image: kingbase_v009r001c001b0025_single_arm:v1
        restart: unless-stopped
        environment:
            DB_USER: root
            DB_PASSWORD: 123456
        ports:
            - "54321:54321"
        volumes:
            - kingbase:/home/kingbase/userdata
            - ../kingbase/ruoyi-vue-pro.sql:/tmp/schema.sql:ro

    opengauss:
        image: opengauss/opengauss:5.0.0
        restart: unless-stopped
        environment:
            GS_USERNAME: root
            GS_PASSWORD: Yudao@2024
            LD_LIBRARY_PATH: /usr/local/opengauss/lib:/usr/lib
        ports:
            - "5432:5432"
        volumes:
            - opengauss:/var/lib/opengauss
            - ../opengauss/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            # docker compose exec opengauss bash -c '/usr/local/opengauss/bin/gsql -U $GS_USERNAME -W $GS_PASSWORD -d postgres -f /tmp/schema.sql'

    highgo:
        # 使用瀚高官方提供的 Docker 镜像,加载后打成本地标签:
        # docker tag <image>:<tag> highgo:local
        image: highgo:local
        profiles: ["highgo"]
        restart: unless-stopped
        ports:
            - "5866:5866"
        volumes:
            - highgo:/home/highgo/hgdb/data
            - ../highgo/quartz.sql:/tmp/quartz.sql:ro
            - ../highgo/ruoyi-vue-pro.sql:/tmp/schema.sql:ro

    # 瀚高初始化:使用 PostgreSQL 客户端创建 ruoyi-vue-pro 数据库并导入 sql/highgo 脚本,只允许创建全新数据库
    # 只支持 PostgreSQL 客户端可用的认证方式(例如 md5、scram-sha-256),SM3 等专有认证请使用瀚高客户端手动导入
    # 执行:HIGHGO_PASSWORD='数据库密码' docker compose run --rm highgo-init
    highgo-init:
        image: postgres:14.2
        profiles: ["highgo-init"]
        restart: "no"
        environment:
            HIGHGO_HOST: ${HIGHGO_HOST:-highgo}
            HIGHGO_PORT: ${HIGHGO_PORT:-5866}
            HIGHGO_USER: ${HIGHGO_USER:-highgo}
            HIGHGO_PASSWORD: ${HIGHGO_PASSWORD:-}
            HIGHGO_MAINTENANCE_DB: ${HIGHGO_MAINTENANCE_DB:-highgo}
            HIGHGO_DATABASE: ruoyi-vue-pro
        entrypoint: ["bash", "/tmp/create_schema.sh"]
        volumes:
            - ../highgo/quartz.sql:/tmp/quartz.sql:ro
            - ../highgo/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            - ./highgo/create_schema.sh:/tmp/create_schema.sh:ro

    oceanbase:
        image: oceanbase/oceanbase-ce:4.4.2-lts
        restart: unless-stopped
        environment:
            MODE: mini
            OB_MEMORY_LIMIT: 6G
            OB_TENANT_MEMORY_SIZE: 3G
            OB_TENANT_MIN_CPU: 2
            OB_TENANT_LOG_DISK_SIZE: 2G
            OB_TENANT_NAME: test
            OB_TENANT_PASSWORD: "123456"
        ports:
            - "2881:2881"
        volumes:
            - oceanbase:/root/ob
            - oceanbase_config:/root/.obd/cluster
            - ../oceanbase/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            - ../oceanbase/quartz.sql:/tmp/quartz.sql:ro
            - ./oceanbase/create_schema.sh:/tmp/create_schema.sh:ro
        healthcheck:
            test: ["CMD-SHELL", "MYSQL_PWD=$$OB_TENANT_PASSWORD obclient -h127.0.0.1 -P2881 -uroot@$$OB_TENANT_NAME -e 'SELECT 1' >/dev/null 2>&1"]
            interval: 10s
            timeout: 5s
            start_period: 120s
            retries: 30

    # TiDB 测试集群:PD、TiKV、TiDB 各 1 个节点,属于 tidb profile,默认不启动
    # 启动:docker compose up -d --wait --wait-timeout 300 tidb
    tidb-pd:
        image: pingcap/pd:v8.5.8
        profiles: ["tidb"]
        restart: unless-stopped
        command:
            - --name=pd
            - --client-urls=http://0.0.0.0:2379
            - --peer-urls=http://0.0.0.0:2380
            - --advertise-client-urls=http://tidb-pd:2379
            - --advertise-peer-urls=http://tidb-pd:2380
            - --initial-cluster=pd=http://tidb-pd:2380
            - --data-dir=/data/pd
            - --config=/pd.toml
        volumes:
            - tidb_pd:/data
            - ./tidb/pd.toml:/pd.toml:ro

    tidb-tikv:
        image: pingcap/tikv:v8.5.8
        profiles: ["tidb"]
        restart: unless-stopped
        command:
            - --addr=0.0.0.0:20160
            - --advertise-addr=tidb-tikv:20160
            - --status-addr=0.0.0.0:20180
            - --advertise-status-addr=tidb-tikv:20180
            - --data-dir=/data/tikv
            - --pd=tidb-pd:2379
            - --config=/tikv.toml
        volumes:
            - tidb_tikv:/data
            - ./tidb/tikv.toml:/tikv.toml:ro
        depends_on:
            - tidb-pd

    tidb:
        image: pingcap/tidb:v8.5.8
        profiles: ["tidb"]
        restart: unless-stopped
        environment:
            TZ: Asia/Shanghai
        command:
            - --store=tikv
            - --path=tidb-pd:2379
            - --advertise-address=tidb
        ports:
            # 只绑定本机,root 密码由 tidb-init 初始化
            - "127.0.0.1:4000:4000"
        depends_on:
            - tidb-tikv
        healthcheck:
            test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:10080/status >/dev/null"]
            interval: 10s
            timeout: 5s
            start_period: 60s
            retries: 30

    # TiDB 初始化:设置 root 密码,创建 ruoyi-vue-pro 数据库并导入 MySQL 脚本,只允许创建全新数据库
    # 执行:docker compose run --rm tidb-init
    tidb-init:
        image: mysql:8.0.33
        profiles: ["tidb-init"]
        restart: "no"
        environment:
            TIDB_HOST: tidb
            TIDB_PORT: 4000
            TIDB_DATABASE: ruoyi-vue-pro
            TIDB_PASSWORD: "123456"
        entrypoint: ["bash", "/tmp/create_schema.sh"]
        volumes:
            - ../mysql/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            - ../mysql/quartz.sql:/tmp/quartz.sql:ro
            - ./tidb/create_schema.sh:/tmp/create_schema.sh:ro

    # MogDB 测试库:云和恩墨官方容器镜像(仅用于测试),属于 mogdb profile,默认不启动
    # 启动:docker compose up -d mogdb
    # 初始化:docker compose exec -u omm mogdb bash /tmp/create_schema.sh(创建 PG 兼容模式的 ruoyi-vue-pro 数据库,并导入 sql/opengauss 脚本)
    mogdb:
        image: swr.cn-north-4.myhuaweicloud.com/mogdb/mogdb:5.0.0
        profiles: ["mogdb"]
        restart: unless-stopped
        shm_size: 1g
        environment:
            # omm 超级用户、mogdb 用户的密码:至少 8 位,包含大小写字母、数字及特殊字符
            GS_PASSWORD: Yudao@2024
        ports:
            # 只绑定本机,应用使用 mogdb 用户连接(omm 初始用户不允许远程连接)
            - "127.0.0.1:15432:5432"
        volumes:
            - mogdb:/var/lib/mogdb
            - ../opengauss/quartz.sql:/tmp/quartz.sql:ro
            - ../opengauss/ruoyi-vue-pro.sql:/tmp/schema.sql:ro
            - ./mogdb/create_schema.sh:/tmp/create_schema.sh:ro