name: snail-job

volumes:
    mysql: { }
    postgres: { }
    sqlserver: { }
    mariadb: { }

services:
    mysql:
        image: mysql:8.0.33
        restart: unless-stopped
        environment:
            TZ: Asia/Shanghai
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: snail_job
        ports:
            - "3306:3306"
        volumes:
            - mysql:/var/lib/mysql/
            # 注入初始化脚本
            - ../sql/snail_job_mysql.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: root
            POSTGRES_DB: snail_job
        ports:
            - "5432:5432"
        volumes:
            - postgres:/var/lib/postgresql/data
            # 注入初始化脚本
            - ../sql/snail_job_postgre.sql:/docker-entrypoint-initdb.d/init.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:
            - ../sql/snail_job_oracle.sql:/tmp/schema.sql:ro
            # 创建app用户: snail_job/SnailJob@//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: "SnailJob@24"
        ports:
            - "1433:1433"
        volumes:
            - sqlserver:/var/opt/mssql
            - ../sql/snail_job_sqlserver.sql:/tmp/schema.sql:ro
            # docker compose exec sqlserver bash /tmp/create_schema.sh
            - ./sqlserver/create_schema.sh:/tmp/create_schema.sh:ro

    mariadb:
        image: mariadb:10.11.7
        restart: unless-stopped
        environment:
            TZ: Asia/Shanghai
            MARIADB_ROOT_PASSWORD: root
            MARIADB_DATABASE: snail_job
        ports:
            - "3308:3306"
        volumes:
            - mariadb:/var/lib/mysql/
            # 注入初始化脚本, mysql
            - ../sql/snail_job_mysql.sql:/docker-entrypoint-initdb.d/init.sql:ro