services: db: image: pgvector/pgvector:pg17 container_name: nexus-db-test environment: POSTGRES_USER: ${POSTGRES_USER:-nexus_user} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} POSTGRES_DB: ${POSTGRES_DB:-nexus_test_db} ports: - "${POSTGRES_PORT:-5433}:5432" volumes: - pgdata_test:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-nexus_user} -d ${POSTGRES_DB:-nexus_test_db}"] interval: 5s timeout: 5s retries: 5 networks: - nexus-test restart: unless-stopped web: build: context: . dockerfile: Dockerfile container_name: nexus-web-test ports: - "${WEB_PORT:-5050}:5000" environment: - ASPNETCORE_ENVIRONMENT=Test - ConnectionStrings__PostgresConnection=Host=db;Database=${POSTGRES_DB:-nexus_test_db};Username=${POSTGRES_USER:-nexus_user};Password=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} - ConnectionStrings__QdrantConnection=http://qdrant:6334 - ConnectionStrings__Neo4jConnection=bolt://neo4j:7687 - Neo4j__Username=${NEO4J_USERNAME:-neo4j} - Neo4j__Password=${NEO4J_PASSWORD:?NEO4J_PASSWORD is required} - Authentication__Google__ClientId=${GOOGLE_CLIENT_ID:-placeholder} - Authentication__Google__ClientSecret=${GOOGLE_CLIENT_SECRET:-placeholder} - Ai__Google__ApiKey=${GOOGLE_AI_API_KEY:-placeholder} - NEXUS_ADMIN_PASSWORD=${NEXUS_ADMIN_PASSWORD:?NEXUS_ADMIN_PASSWORD is required} depends_on: db: condition: service_healthy qdrant: condition: service_healthy neo4j: condition: service_healthy networks: - nexus-test restart: unless-stopped qdrant: image: qdrant/qdrant:latest container_name: nexus-qdrant-test environment: - QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY:-} ports: - "${QDRANT_HTTP_PORT:-6343}:6333" - "${QDRANT_GRPC_PORT:-6344}:6334" volumes: - qdrant_test_data:/qdrant/storage healthcheck: test: ["CMD-SHELL", "bash -c 'exec 3<>/dev/tcp/127.0.0.1/6333'"] interval: 5s timeout: 5s retries: 5 networks: - nexus-test restart: unless-stopped neo4j: image: neo4j:5-community container_name: nexus-neo4j-test environment: - NEO4J_AUTH=${NEO4J_USERNAME:-neo4j}/${NEO4J_PASSWORD:?NEO4J_PASSWORD is required} ports: - "${NEO4J_HTTP_PORT:-7484}:7474" - "${NEO4J_BOLT_PORT:-7697}:7687" volumes: - neo4j_test_data:/data healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:7474 || exit 1"] interval: 10s timeout: 10s retries: 10 start_period: 30s networks: - nexus-test restart: unless-stopped volumes: pgdata_test: qdrant_test_data: neo4j_test_data: networks: nexus-test: driver: bridge