git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
64 lines
1.4 KiB
Docker
64 lines
1.4 KiB
Docker
# RuVector Benchmark Container
|
|
# Containerized benchmarking environment with k6 and all dependencies
|
|
|
|
FROM loadimpact/k6:0.48.0 as k6
|
|
|
|
FROM node:20-alpine
|
|
|
|
# Install dependencies
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
curl \
|
|
git \
|
|
python3 \
|
|
py3-pip
|
|
|
|
# Copy k6 binary from k6 image
|
|
COPY --from=k6 /usr/bin/k6 /usr/bin/k6
|
|
|
|
# Set working directory
|
|
WORKDIR /benchmarks
|
|
|
|
# Copy package files
|
|
COPY package*.json ./
|
|
|
|
# Install Node.js dependencies
|
|
RUN npm install -g typescript ts-node && \
|
|
npm install --production
|
|
|
|
# Copy benchmark files
|
|
COPY *.ts ./
|
|
COPY *.html ./
|
|
COPY *.md ./
|
|
COPY setup.sh ./
|
|
|
|
# Make scripts executable
|
|
RUN chmod +x setup.sh
|
|
|
|
# Create results directory
|
|
RUN mkdir -p results
|
|
|
|
# Set environment variables
|
|
ENV BASE_URL=http://localhost:8080
|
|
ENV PARALLEL=1
|
|
ENV ENABLE_HOOKS=false
|
|
ENV LOG_LEVEL=info
|
|
ENV NODE_OPTIONS=--max-old-space-size=4096
|
|
|
|
# Volume for results
|
|
VOLUME ["/benchmarks/results"]
|
|
|
|
# Default command
|
|
CMD ["ts-node", "benchmark-runner.ts", "list"]
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD k6 version || exit 1
|
|
|
|
# Labels
|
|
LABEL org.opencontainers.image.title="RuVector Benchmarks"
|
|
LABEL org.opencontainers.image.description="Enterprise-grade benchmarking suite for RuVector"
|
|
LABEL org.opencontainers.image.version="1.0.0"
|
|
LABEL org.opencontainers.image.vendor="RuVector Team"
|
|
LABEL org.opencontainers.image.source="https://github.com/ruvnet/ruvector"
|