Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'
This commit is contained in:
291
vendor/ruvector/crates/ruvector-postgres/docker/docker-compose.yml
vendored
Normal file
291
vendor/ruvector/crates/ruvector-postgres/docker/docker-compose.yml
vendored
Normal file
@@ -0,0 +1,291 @@
|
||||
# RuVector-Postgres Docker Compose Configuration
|
||||
# Provides development, testing, and benchmarking services
|
||||
#
|
||||
# Usage:
|
||||
# docker-compose up postgres # Start PostgreSQL with extension
|
||||
# docker-compose up test-runner # Run tests
|
||||
# docker-compose --profile benchmark up benchmark # Run benchmarks
|
||||
#
|
||||
# Build for specific PostgreSQL version:
|
||||
# PG_VERSION=16 docker-compose build
|
||||
|
||||
version: '3.8'
|
||||
|
||||
# Build arguments shared across services
|
||||
x-build-args: &build-args
|
||||
PG_VERSION: ${PG_VERSION:-17}
|
||||
RUST_VERSION: ${RUST_VERSION:-1.83}
|
||||
|
||||
# Common environment for test containers
|
||||
x-test-env: &test-env
|
||||
DATABASE_URL: postgres://ruvector:ruvector@postgres:5432/ruvector_test
|
||||
RUST_LOG: ${RUST_LOG:-info}
|
||||
RUST_BACKTRACE: ${RUST_BACKTRACE:-1}
|
||||
PG_VERSION: ${PG_VERSION:-17}
|
||||
|
||||
# Common volume mounts for development
|
||||
x-dev-volumes: &dev-volumes
|
||||
- ../../..:/app:cached
|
||||
- cargo_cache:/usr/local/cargo/registry
|
||||
- cargo_git:/usr/local/cargo/git
|
||||
- target_cache:/app/target
|
||||
|
||||
services:
|
||||
# ===========================================================================
|
||||
# PostgreSQL with RuVector Extension
|
||||
# ===========================================================================
|
||||
postgres:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/Dockerfile
|
||||
args:
|
||||
<<: *build-args
|
||||
container_name: ruvector-postgres
|
||||
hostname: postgres
|
||||
ports:
|
||||
- "${POSTGRES_PORT:-5432}:5432"
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-ruvector}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ruvector}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-ruvector_test}
|
||||
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||
# PostgreSQL performance tuning
|
||||
POSTGRES_HOST_AUTH_METHOD: scram-sha-256
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
- ./init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
||||
- ./postgresql.conf:/etc/postgresql/postgresql.conf:ro
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-ruvector} -d ${POSTGRES_DB:-ruvector_test}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 10s
|
||||
networks:
|
||||
- ruvector-network
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
reservations:
|
||||
memory: 512M
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# Test Runner Container
|
||||
# ===========================================================================
|
||||
test-runner:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/test-runner/Dockerfile
|
||||
args:
|
||||
<<: *build-args
|
||||
container_name: ruvector-test-runner
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *test-env
|
||||
TEST_RESULTS_DIR: /test-results
|
||||
JUNIT_OUTPUT: /test-results/junit.xml
|
||||
volumes:
|
||||
- ../../..:/app:cached
|
||||
- cargo_cache:/usr/local/cargo/registry
|
||||
- cargo_git:/usr/local/cargo/git
|
||||
- target_cache:/app/target
|
||||
- test_results:/test-results
|
||||
networks:
|
||||
- ruvector-network
|
||||
working_dir: /app/crates/ruvector-postgres
|
||||
command: ["/usr/local/bin/run-tests.sh"]
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 4G
|
||||
reservations:
|
||||
memory: 1G
|
||||
|
||||
# ===========================================================================
|
||||
# Benchmark Runner Container
|
||||
# ===========================================================================
|
||||
benchmark:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/benchmark/Dockerfile
|
||||
args:
|
||||
<<: *build-args
|
||||
container_name: ruvector-benchmark
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *test-env
|
||||
RESULTS_DIR: /benchmark-results
|
||||
COMPARE_BASELINE: ${COMPARE_BASELINE:-false}
|
||||
BASELINE_DIR: /baseline
|
||||
BENCHMARK_FILTER: ${BENCHMARK_FILTER:-}
|
||||
volumes:
|
||||
- ../../..:/app:cached
|
||||
- cargo_cache:/usr/local/cargo/registry
|
||||
- cargo_git:/usr/local/cargo/git
|
||||
- target_cache:/app/target
|
||||
- benchmark_results:/benchmark-results
|
||||
- ${BASELINE_DIR:-./baseline}:/baseline:ro
|
||||
networks:
|
||||
- ruvector-network
|
||||
working_dir: /app/crates/ruvector-postgres
|
||||
command: ["/usr/local/bin/run-benchmarks.sh"]
|
||||
profiles:
|
||||
- benchmark
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 8G
|
||||
reservations:
|
||||
memory: 2G
|
||||
|
||||
# ===========================================================================
|
||||
# Development Shell Container
|
||||
# ===========================================================================
|
||||
dev:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/test-runner/Dockerfile
|
||||
args:
|
||||
<<: *build-args
|
||||
container_name: ruvector-dev
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *test-env
|
||||
volumes:
|
||||
*dev-volumes
|
||||
networks:
|
||||
- ruvector-network
|
||||
working_dir: /app/crates/ruvector-postgres
|
||||
command: ["bash"]
|
||||
stdin_open: true
|
||||
tty: true
|
||||
profiles:
|
||||
- dev
|
||||
|
||||
# ===========================================================================
|
||||
# PostgreSQL Versions for Matrix Testing
|
||||
# ===========================================================================
|
||||
postgres-pg14:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/Dockerfile
|
||||
args:
|
||||
PG_VERSION: 14
|
||||
RUST_VERSION: ${RUST_VERSION:-1.83}
|
||||
container_name: ruvector-postgres-pg14
|
||||
ports:
|
||||
- "5414:5432"
|
||||
environment:
|
||||
POSTGRES_USER: ruvector
|
||||
POSTGRES_PASSWORD: ruvector
|
||||
POSTGRES_DB: ruvector_test
|
||||
volumes:
|
||||
- postgres_data_pg14:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ruvector"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- ruvector-network
|
||||
profiles:
|
||||
- matrix
|
||||
|
||||
postgres-pg15:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/Dockerfile
|
||||
args:
|
||||
PG_VERSION: 15
|
||||
RUST_VERSION: ${RUST_VERSION:-1.83}
|
||||
container_name: ruvector-postgres-pg15
|
||||
ports:
|
||||
- "5415:5432"
|
||||
environment:
|
||||
POSTGRES_USER: ruvector
|
||||
POSTGRES_PASSWORD: ruvector
|
||||
POSTGRES_DB: ruvector_test
|
||||
volumes:
|
||||
- postgres_data_pg15:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ruvector"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- ruvector-network
|
||||
profiles:
|
||||
- matrix
|
||||
|
||||
postgres-pg16:
|
||||
build:
|
||||
context: ../../..
|
||||
dockerfile: crates/ruvector-postgres/docker/Dockerfile
|
||||
args:
|
||||
PG_VERSION: 16
|
||||
RUST_VERSION: ${RUST_VERSION:-1.83}
|
||||
container_name: ruvector-postgres-pg16
|
||||
ports:
|
||||
- "5416:5432"
|
||||
environment:
|
||||
POSTGRES_USER: ruvector
|
||||
POSTGRES_PASSWORD: ruvector
|
||||
POSTGRES_DB: ruvector_test
|
||||
volumes:
|
||||
- postgres_data_pg16:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ruvector"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- ruvector-network
|
||||
profiles:
|
||||
- matrix
|
||||
|
||||
# ===========================================================================
|
||||
# Volumes
|
||||
# ===========================================================================
|
||||
volumes:
|
||||
# PostgreSQL data volumes (per version)
|
||||
postgres_data:
|
||||
name: ruvector-postgres-data
|
||||
postgres_data_pg14:
|
||||
name: ruvector-postgres-data-pg14
|
||||
postgres_data_pg15:
|
||||
name: ruvector-postgres-data-pg15
|
||||
postgres_data_pg16:
|
||||
name: ruvector-postgres-data-pg16
|
||||
|
||||
# Cargo cache volumes (shared across containers)
|
||||
cargo_cache:
|
||||
name: ruvector-cargo-cache
|
||||
cargo_git:
|
||||
name: ruvector-cargo-git
|
||||
target_cache:
|
||||
name: ruvector-target-cache
|
||||
|
||||
# Test and benchmark results
|
||||
test_results:
|
||||
name: ruvector-test-results
|
||||
benchmark_results:
|
||||
name: ruvector-benchmark-results
|
||||
|
||||
# ===========================================================================
|
||||
# Networks
|
||||
# ===========================================================================
|
||||
networks:
|
||||
ruvector-network:
|
||||
name: ruvector-network
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.28.0.0/16
|
||||
Reference in New Issue
Block a user