services:
redis-test:
image: redis:7-alpine
container_name: paladin-redis-test
ports:
- "6380:6379"
command: redis-server --appendonly no --save "" --protected-mode no
tmpfs:
- /data
networks:
- paladin-test-network
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 5s
timeout: 3s
retries: 5
minio-test:
image: minio/minio:latest
container_name: paladin-minio-test
ports:
- "9010:9000"
- "9011:9001"
environment:
MINIO_ROOT_USER: testuser
MINIO_ROOT_PASSWORD: testpass123
MINIO_CONSOLE_ADDRESS: ":9001"
command: server /data --console-address ":9001"
tmpfs:
- /data
networks:
- paladin-test-network
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
interval: 5s
timeout: 3s
retries: 10
start_period: 10s
minio-test-init:
image: minio/mc:latest
container_name: paladin-minio-test-init
depends_on:
minio-test:
condition: service_healthy
environment:
MINIO_ROOT_USER: testuser
MINIO_ROOT_PASSWORD: testpass123
entrypoint: |
/bin/sh -c "
echo 'Waiting for MinIO test to be ready...'
until mc alias set minio http://minio-test:9000 \$$MINIO_ROOT_USER \$$MINIO_ROOT_PASSWORD; do
echo 'MinIO test not ready, waiting...'
sleep 2
done
echo 'MinIO test is ready. Creating test buckets...'
mc mb minio/test-bucket --ignore-existing
mc mb minio/integration-tests --ignore-existing
echo 'Test bucket initialization complete'
"
networks:
- paladin-test-network
integration-tests:
build:
context: ..
dockerfile: docker/testserver/Dockerfile
target: test
container_name: paladin-integration-tests
depends_on:
minio-test:
condition: service_healthy
redis-test:
condition: service_healthy
minio-test-init:
condition: service_completed_successfully
environment:
- RUST_LOG=debug
- RUST_BACKTRACE=1
- APP_REDIS_HOST=redis-test
- APP_REDIS_PORT=6379
- APP_MINIO_ENDPOINT=minio-test:9000
- APP_MINIO_ACCESS_KEY=testuser
- APP_MINIO_SECRET_KEY=testpass123
- APP_MINIO_BUCKET=test-bucket
- APP_MINIO_SECURE=false
command: cargo test --features integration-tests -- --test-threads=1 --nocapture
networks:
- paladin-test-network
networks:
paladin-test-network:
driver: bridge