sqlx/tests/docker-compose.yml
Daniel Black a6a2af115e
Bump mariadb CI images + mysql unpin (#2739)
With MariaDB 10.3 EOL it seems prudent to include
the latest 10.11 LTS release in the CI tests.

To catch #1664 sort of issues prior to release, add
a container image test for mariadb that contains the
finished pre-release code changes (and container changes)
to ensure that compatibilty is maintianed. When
server code hits the branch associated with this tag
it is considered finished by its server developers and
has passes CI so no regressions are expected, but
it wouldn't hurt to have CI in other systems testing
it too.

Since MySQL has fixed the regression that caused #1664
this puts it back to their 8.0 release tag.

Append the :z tag to the docker compose volume mounts
so on selinux systems enough permissions occur for the
volume to be able to read the volume contents.
2023-09-11 19:19:28 -07:00

372 lines
12 KiB
YAML

version: "3"
services:
#
# MySQL 8.x, 5.7.x
# https://www.mysql.com/support/supportedplatforms/database.html
#
mysql_8:
image: mysql:8.0
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: sqlx
mysql_8_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: mysql:8.0
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: sqlx
MYSQL_ALLOW_EMPTY_PASSWORD: 1
mysql_5_7:
image: mysql:5.7
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: sqlx
mysql_5_7_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: mysql:5.7
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: sqlx
MYSQL_ALLOW_EMPTY_PASSWORD: 1
#
# MariaDB 10.11, 10.6, 10.5, 10.4
# https://mariadb.org/about/#maintenance-policy
#
mariadb_10_11:
image: mariadb:10.11
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_DATABASE: sqlx
mariadb_10_11_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: mariadb:10.11
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_DATABASE: sqlx
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: 1
mariadb_10_6:
image: mariadb:10.6
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_DATABASE: sqlx
mariadb_10_6_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: mariadb:10.6
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_DATABASE: sqlx
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: 1
mariadb_10_5:
image: mariadb:10.5
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_DATABASE: sqlx
mariadb_10_5_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: mariadb:10.5
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_DATABASE: sqlx
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: 1
mariadb_10_4:
image: mariadb:10.4
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_DATABASE: sqlx
mariadb_10_4_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: mariadb:10.4
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_DATABASE: sqlx
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: 1
# Ensure MariaDB upstream isn't regressing before release
# https://mariadb.org/new-service-quay-io-mariadb-foundation-mariadb-devel/
mariadb_verylatest:
image: quay.io/mariadb-foundation/mariadb-devel:verylatest
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_DATABASE: sqlx
mariadb_verylatest_client_ssl:
build:
context: .
dockerfile: mysql/Dockerfile
args:
IMAGE: quay.io/mariadb-foundation/mariadb-devel:verylatest
volumes:
- "./mysql/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
ports:
- 3306
environment:
MARIADB_DATABASE: sqlx
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: 1
#
# PostgreSQL 15.x, 14.x, 13.x, 12.x, 11.x
# https://www.postgresql.org/support/versioning/
#
postgres_15:
build:
context: .
dockerfile: postgres/Dockerfile
args:
VERSION: 15
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:z"
# Loading `pg_stat_statements` should serve as a regression test for:
# https://github.com/launchbadge/sqlx/issues/2622
command: >
-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key -c shared_preload_libraries=pg_stat_statements
postgres_15_client_ssl:
build:
context: .
dockerfile: postgres/Dockerfile
args:
VERSION: 15
ports:
- 5432
environment:
POSTGRES_DB: sqlx
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_INITDB_ARGS: --auth-host=trust
volumes:
- "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
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:z"
command: >
-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key
postgres_14_client_ssl:
build:
context: .
dockerfile: postgres/Dockerfile
args:
VERSION: 14
ports:
- 5432
environment:
POSTGRES_DB: sqlx
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_INITDB_ARGS: --auth-host=trust
volumes:
- "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
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_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:z"
command: >
-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key
postgres_13_client_ssl:
build:
context: .
dockerfile: postgres/Dockerfile
args:
VERSION: 13
ports:
- 5432
environment:
POSTGRES_DB: sqlx
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_INITDB_ARGS: --auth-host=trust
volumes:
- "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
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_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:z"
command: >
-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key
postgres_12_client_ssl:
build:
context: .
dockerfile: postgres/Dockerfile
args:
VERSION: 12.3
ports:
- 5432
environment:
POSTGRES_DB: sqlx
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_INITDB_ARGS: --auth-host=trust
volumes:
- "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
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_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:z"
command: >
-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key
postgres_11_client_ssl:
build:
context: .
dockerfile: postgres/Dockerfile
args:
VERSION: 11
ports:
- 5432
environment:
POSTGRES_DB: sqlx
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_INITDB_ARGS: --auth-host=trust
volumes:
- "./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql:z"
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