219 lines
7.3 KiB
YAML
219 lines
7.3 KiB
YAML
services:
|
|
# Weaviate instance for basic tests
|
|
weaviate:
|
|
image: semitechnologies/weaviate:1.32.4
|
|
command:
|
|
- --host
|
|
- 0.0.0.0
|
|
- --port
|
|
- '8080'
|
|
- --scheme
|
|
- http
|
|
environment:
|
|
- CLUSTER_HOSTNAME=weaviate
|
|
- CLUSTER_ADVERTISE_ADDR=172.28.0.12
|
|
- CLUSTER_GOSSIP_BIND_PORT=7946
|
|
- CLUSTER_DATA_BIND_PORT=7947
|
|
- DISABLE_TELEMETRY=true
|
|
- PERSISTENCE_DATA_PATH=/var/lib/weaviate
|
|
- DEFAULT_VECTORIZER_MODULE=none
|
|
- ENABLE_MODULES=
|
|
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true
|
|
- LOG_LEVEL=info
|
|
ports:
|
|
- "9000:8080"
|
|
volumes:
|
|
- weaviate_data:/var/lib/weaviate
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.12
|
|
|
|
# Redis Stack instance for vector store tests
|
|
redis-stack:
|
|
image: redis/redis-stack:7.4.0-v6
|
|
command: redis-stack-server --protected-mode no
|
|
ports:
|
|
- "6379:6379"
|
|
- "8001:8001" # RedisInsight web UI
|
|
volumes:
|
|
- redis_data:/data
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.13
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# Generates self-signed TLS certs shared with the TLS Redis services.
|
|
# Writes to ./redis-certs on the host so tests can read the CA cert.
|
|
redis-certs-init:
|
|
image: alpine:3.19
|
|
volumes:
|
|
- ./redis-certs:/tls
|
|
command: >
|
|
sh -c "
|
|
set -e;
|
|
if [ ! -f /tls/redis.crt ]; then
|
|
apk add --no-cache openssl >/dev/null;
|
|
cd /tls;
|
|
openssl req -x509 -newkey rsa:2048 -days 365 -nodes -keyout ca.key -out ca.crt -subj '/CN=bifrost-test-ca';
|
|
openssl req -new -newkey rsa:2048 -nodes -keyout redis.key -out redis.csr -subj '/CN=localhost' -addext 'subjectAltName=DNS:localhost,IP:127.0.0.1';
|
|
openssl x509 -req -in redis.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out redis.crt -days 365 -extfile <(printf 'subjectAltName=DNS:localhost,IP:127.0.0.1');
|
|
chmod 644 ca.crt ca.key redis.crt redis.key;
|
|
fi;
|
|
echo 'certs ready';
|
|
"
|
|
networks:
|
|
- bifrost_network
|
|
|
|
# TLS-enabled standalone Redis on 6380 for TLS client tests.
|
|
redis-tls:
|
|
image: redis:7.4-alpine
|
|
depends_on:
|
|
redis-certs-init:
|
|
condition: service_completed_successfully
|
|
volumes:
|
|
- ./redis-certs:/tls:ro
|
|
command: >
|
|
redis-server
|
|
--tls-port 6380
|
|
--port 0
|
|
--tls-cert-file /tls/redis.crt
|
|
--tls-key-file /tls/redis.key
|
|
--tls-ca-cert-file /tls/ca.crt
|
|
--tls-auth-clients no
|
|
--protected-mode no
|
|
ports:
|
|
- "6380:6380"
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.17
|
|
|
|
# Single-node Redis Cluster on 7000 for cluster client tests.
|
|
redis-cluster:
|
|
image: redis:7.4-alpine
|
|
entrypoint: ["sh", "-c"]
|
|
command:
|
|
- |
|
|
redis-server \
|
|
--port 7000 \
|
|
--bind 0.0.0.0 \
|
|
--cluster-enabled yes \
|
|
--cluster-config-file /tmp/nodes.conf \
|
|
--cluster-announce-ip 127.0.0.1 \
|
|
--cluster-announce-port 7000 \
|
|
--cluster-announce-bus-port 17000 \
|
|
--protected-mode no &
|
|
SERVER_PID=$$!
|
|
until redis-cli -p 7000 ping >/dev/null 2>&1; do sleep 0.2; done
|
|
redis-cli -p 7000 cluster addslotsrange 0 16383 || true
|
|
wait $$SERVER_PID
|
|
ports:
|
|
- "7000:7000"
|
|
- "17000:17000"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli -p 7000 cluster info | grep -q cluster_state:ok"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
start_period: 5s
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.18
|
|
|
|
# Single-node TLS Redis Cluster on 7100 for TLS cluster client tests.
|
|
redis-cluster-tls:
|
|
image: redis:7.4-alpine
|
|
depends_on:
|
|
redis-certs-init:
|
|
condition: service_completed_successfully
|
|
volumes:
|
|
- ./redis-certs:/tls:ro
|
|
entrypoint: ["sh", "-c"]
|
|
command:
|
|
- |
|
|
redis-server \
|
|
--tls-port 7100 \
|
|
--port 0 \
|
|
--bind 0.0.0.0 \
|
|
--tls-cert-file /tls/redis.crt \
|
|
--tls-key-file /tls/redis.key \
|
|
--tls-ca-cert-file /tls/ca.crt \
|
|
--tls-auth-clients no \
|
|
--tls-cluster yes \
|
|
--cluster-enabled yes \
|
|
--cluster-config-file /tmp/nodes.conf \
|
|
--cluster-announce-ip 127.0.0.1 \
|
|
--cluster-announce-tls-port 7100 \
|
|
--cluster-announce-bus-port 17100 \
|
|
--protected-mode no &
|
|
SERVER_PID=$$!
|
|
until redis-cli --tls --cacert /tls/ca.crt -p 7100 ping >/dev/null 2>&1; do sleep 0.2; done
|
|
redis-cli --tls --cacert /tls/ca.crt -p 7100 cluster addslotsrange 0 16383 || true
|
|
wait $$SERVER_PID
|
|
ports:
|
|
- "7100:7100"
|
|
- "17100:17100"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli --tls --cacert /tls/ca.crt -p 7100 cluster info | grep -q cluster_state:ok"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
start_period: 5s
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.19
|
|
|
|
# Qdrant instance for vector store tests
|
|
qdrant:
|
|
image: qdrant/qdrant:v1.16.0
|
|
ports:
|
|
- "6334:6334" # gRPC API
|
|
volumes:
|
|
- qdrant_data:/qdrant/storage
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.14
|
|
|
|
# Pinecone Local instance for vector store tests
|
|
pinecone-local:
|
|
image: ghcr.io/pinecone-io/pinecone-index:latest
|
|
environment:
|
|
PORT: 5081
|
|
INDEX_TYPE: serverless
|
|
VECTOR_TYPE: dense
|
|
DIMENSION: 1536
|
|
METRIC: cosine
|
|
ports:
|
|
- "5081:5081"
|
|
platform: linux/amd64
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.15
|
|
# Postgres instance for configstore and encryption tests
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_USER: bifrost
|
|
POSTGRES_PASSWORD: bifrost_password
|
|
POSTGRES_DB: bifrost
|
|
ports:
|
|
- "5432:5432"
|
|
networks:
|
|
bifrost_network:
|
|
ipv4_address: 172.28.0.16
|
|
|
|
networks:
|
|
bifrost_network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.28.0.0/16
|
|
gateway: 172.28.0.1
|
|
|
|
volumes:
|
|
weaviate_data:
|
|
redis_data:
|
|
qdrant_data: |