58 lines
2.2 KiB
Bash
Executable File
58 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# rvf-docker.sh — Run RVF in Docker (any platform)
|
|
# Usage: bash scripts/rvf-docker.sh
|
|
set -euo pipefail
|
|
|
|
echo "=== RVF Docker Quick Start ==="
|
|
|
|
# ── 1. Build the Docker image ───────────────────────────────
|
|
echo "[1/4] Building RVF Docker image..."
|
|
cat > /tmp/Dockerfile.rvf <<'DOCKERFILE'
|
|
FROM rust:1.87-bookworm AS builder
|
|
WORKDIR /app
|
|
COPY . .
|
|
RUN cd crates/rvf && cargo build -p rvf-cli --release
|
|
RUN cp target/release/rvf /usr/local/bin/rvf
|
|
|
|
FROM debian:bookworm-slim
|
|
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/*
|
|
COPY --from=builder /usr/local/bin/rvf /usr/local/bin/rvf
|
|
WORKDIR /data
|
|
ENTRYPOINT ["rvf"]
|
|
DOCKERFILE
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
|
docker build -f /tmp/Dockerfile.rvf -t rvf:latest "$REPO_ROOT"
|
|
echo " Built: rvf:latest"
|
|
|
|
# ── 2. Create and populate a store ──────────────────────────
|
|
echo "[2/4] Creating and populating vector store..."
|
|
docker run --rm -v "$(pwd)/output:/data" rvf:latest create demo.rvf --dimension 128
|
|
echo " Created output/demo.rvf"
|
|
|
|
# ── 3. Ingest sample data ──────────────────────────────────
|
|
echo "[3/4] Ingesting sample vectors..."
|
|
cat > /tmp/rvf_sample.json <<'JSON'
|
|
[
|
|
{"id": 1, "vector": [0.1, 0.2, 0.3]},
|
|
{"id": 2, "vector": [0.4, 0.5, 0.6]},
|
|
{"id": 3, "vector": [0.7, 0.8, 0.9]}
|
|
]
|
|
JSON
|
|
docker run --rm \
|
|
-v "$(pwd)/output:/data" \
|
|
-v "/tmp/rvf_sample.json:/input.json:ro" \
|
|
rvf:latest ingest demo.rvf --input /input.json --format json
|
|
echo " Ingested 3 vectors"
|
|
|
|
# ── 4. Query and inspect ───────────────────────────────────
|
|
echo "[4/4] Querying and inspecting..."
|
|
docker run --rm -v "$(pwd)/output:/data" rvf:latest query demo.rvf --vector "0.1,0.2,0.3" --k 2
|
|
docker run --rm -v "$(pwd)/output:/data" rvf:latest inspect demo.rvf
|
|
|
|
echo ""
|
|
echo "=== Done ==="
|
|
echo " Docker image: rvf:latest"
|
|
echo " Store: output/demo.rvf"
|
|
echo " Run any rvf command: docker run --rm -v \$(pwd)/output:/data rvf:latest <command>"
|