sqlx-oldapi 0.6.53

🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, SQLite, MSSQL, and ODBC.
Documentation
services:
    #
    # MySQL 8.x, 5.7.x
    # https://www.mysql.com/support/supportedplatforms/database.html
    #

    mysql_8:
        # FIXME: 8.0.28 introduced a regression in our type tests: https://github.com/launchbadge/sqlx/issues/1664
        # The MySQL devs agreed that it was a regression and that it will be fixed in 8.0.29
        image: mysql:8.0.27
        volumes:
            - "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        ports:
            - 3306
        environment:
            MYSQL_ROOT_HOST: '%'
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: sqlx

    mysql_5_7:
        image: mysql:5.7
        volumes:
            - "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        ports:
            - 3306
        environment:
            MYSQL_ROOT_HOST: '%'
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: sqlx
    #
    # MariaDB 10.6, 10.5, 10.4, 10.3
    # https://mariadb.org/about/#maintenance-policy
    #

    mariadb_10_6:
        image: mariadb:10.6
        volumes:
            - "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        ports:
            - 3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: sqlx

    mariadb_10_5:
        image: mariadb:10.5
        volumes:
            - "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        ports:
            - 3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: sqlx

    mariadb_10_4:
        image: mariadb:10.4
        volumes:
            - "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        ports:
            - 3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: sqlx

    mariadb_10_3:
        image: mariadb:10.3
        volumes:
            - "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        ports:
            - 3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: sqlx

    #
    # PostgreSQL 14.x, 13.x, 12.x, 11.x 10.x
    # https://www.postgresql.org/support/versioning/
    #

    postgres_16: # Test postgres 16 with required client cert
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
                VERSION: 16
        ports:
            - 5432:5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_HOST_AUTH_METHOD: trust
            POSTGRES_INITDB_ARGS: --auth-host=trust
        healthcheck:
            test: ["CMD-SHELL", "pg_isready -U postgres"]
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key -c ssl_ca_file=/var/lib/postgresql/ca.crt -c hba_file=/var/lib/postgresql/pg_hba.conf

    postgres_14:
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
              VERSION: 14
        ports:
            - 5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: scram-sha-256
            POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key

    postgres_13:
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
              VERSION: 13
        ports:
            - 5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: scram-sha-256
            POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key

    postgres_12:
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
              VERSION: 12
        ports:
            - 5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: scram-sha-256
            POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key

    postgres_11:
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
                VERSION: 11
        ports:
          - 5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: scram-sha-256
            POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key

    postgres_10:
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
                VERSION: 10
        ports:
          - 5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: scram-sha-256
            POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key

    postgres_16_no_ssl:
        build:
            context: .
            dockerfile: postgres/Dockerfile
            args:
                VERSION: 16
        ports:
            - 5432
        environment:
            POSTGRES_DB: sqlx
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: scram-sha-256
            POSTGRES_INITDB_ARGS: --auth-host=scram-sha-256
        volumes:
            - "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql"
        command: >
            -c ssl=off -c log_statement=all
    #
    # Microsoft SQL Server (MSSQL)
    # https://hub.docker.com/_/microsoft-mssql-server
    #

    mssql_2019:
        build:
            context: .
            dockerfile: mssql/Dockerfile
            args:
                VERSION: 2019-latest
        ports:
          - 1433
        environment:
            ACCEPT_EULA: "Y"
            SA_PASSWORD: Password123!

    mssql_2022:
        build:
            context: .
            dockerfile: mssql/Dockerfile
            args:
                VERSION: 2022-latest
        ports:
          - 1433
        volumes:
          - "./mssql/mssql.conf:/var/opt/mssql/mssql.conf"
        environment:
            ACCEPT_EULA: "Y"
            SA_PASSWORD: Password123!

    #
    # IBM Db2
    # https://hub.docker.com/r/ibmcom/db2
    #

    db2_11:
        image: ibmcom/db2:11.5.1.0-CN1
        privileged: true
        environment:
            LICENSE: accept
            DB2INST1_PASSWORD: password
            DBNAME: sqlx