Files
metabuilder/deployment/docker-compose.test.yml
2026-03-09 22:30:41 +00:00

54 lines
1.9 KiB
YAML

# docker-compose.test.yml — Lightweight DB containers for DBAL integration tests.
#
# DEPRECATED: testcontainers-sidecar now starts/stops containers automatically.
# Keep as fallback for environments without Docker daemon access (e.g. some CI configs).
# Preferred: build with BUILD_INTEGRATION_TESTS=ON and let testcontainers manage lifecycle.
#
# Uses non-conflicting ports (5433, 3307) so it can run alongside the dev stack.
# tmpfs mounts make containers fast and ephemeral (data discarded on stop).
#
# Usage:
# docker compose -f deployment/docker-compose.test.yml up -d
# export DBAL_TEST_POSTGRES_URL=postgresql://testuser:testpass@localhost:5433/dbal_test
# export DBAL_TEST_MYSQL_URL=mysql://root:testpass@localhost:3307/dbal_test
# cd dbal/production/_build && ctest -R dbal_integration_tests --output-on-failure
# docker compose -f deployment/docker-compose.test.yml down
services:
postgres-test:
image: postgres:16-alpine
container_name: dbal-test-postgres
environment:
POSTGRES_PASSWORD: testpass
POSTGRES_USER: testuser
POSTGRES_DB: dbal_test
ports:
- "5433:5432" # 5433 avoids conflict with dev stack on 5432
tmpfs:
- /var/lib/postgresql/data # in-memory storage, instant teardown
healthcheck:
test: ["CMD-SHELL", "pg_isready -U testuser -d dbal_test"]
interval: 2s
timeout: 5s
retries: 10
mysql-test:
image: mysql:8-oracle
container_name: dbal-test-mysql
environment:
MYSQL_ROOT_PASSWORD: testpass
MYSQL_DATABASE: dbal_test
MYSQL_USER: testuser
MYSQL_PASSWORD: testpass
ports:
- "3307:3306" # 3307 avoids conflict with dev stack on 3306
tmpfs:
- /var/lib/mysql # in-memory storage, instant teardown
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-ptestpass"]
interval: 5s
timeout: 10s
retries: 10
start_period: 20s