ruvector/tests/integration/distributed/Dockerfile
rUv 526a9c39c9 feat(test): Add distributed integration tests and Docker infrastructure for horizontal scaling
- Add Docker Compose 5-node cluster for Raft consensus testing
- Add comprehensive integration tests for ruvector-raft, ruvector-cluster, ruvector-replication
- Add performance benchmark tests with latency measurements
- Verify all 69 unit tests pass (23 raft + 20 cluster + 26 replication)

Tests cover:
- Raft consensus: leader election, log replication, term management
- Cluster management: node discovery, shard assignment, consistent hashing
- Replication: sync modes, conflict resolution, failover management

Closes #24

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 22:49:37 +00:00

53 lines
1.2 KiB
Docker

# Ruvector Distributed Node Dockerfile
FROM rust:1.87-slim-bookworm AS builder
# Install build dependencies
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy workspace files
COPY Cargo.toml Cargo.lock ./
COPY crates/ ./crates/
COPY examples/ ./examples/
# Build release binaries
RUN cargo build --release -p ruvector-raft -p ruvector-cluster -p ruvector-replication
# Runtime stage
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y \
ca-certificates \
curl \
netcat-openbsd \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy built binaries
COPY --from=builder /app/target/release/libruvector_raft.rlib ./
COPY --from=builder /app/target/release/libruvector_cluster.rlib ./
COPY --from=builder /app/target/release/libruvector_replication.rlib ./
# Copy the node runner script
COPY tests/integration/distributed/node_runner.sh ./
RUN chmod +x node_runner.sh
# Environment variables
ENV NODE_ID=""
ENV NODE_ROLE="follower"
ENV RAFT_PORT=7000
ENV CLUSTER_PORT=8000
ENV REPLICATION_PORT=9000
ENV CLUSTER_MEMBERS=""
ENV SHARD_COUNT=64
ENV REPLICATION_FACTOR=3
EXPOSE 7000 8000 9000
CMD ["./node_runner.sh"]