vector-service/Dockerfile
Christoph Haas 111af2d66e
All checks were successful
Build and push container image / build-and-push (push) Successful in 4m10s
Switch to bge-small-en-v1.5 for asymmetric query/passage embeddings
Replace all-MiniLM-L6-v2 with bge-small-en-v1.5, which separates
short search queries from package descriptions via the retrieval
instruction. Requests now default to query mode and opt out with
type=passage for documents. Uses the export's pooled, L2-normalized
sentence_embedding output instead of manual mean pooling.
2026-09-13 22:10:01 +02:00

60 lines
2.3 KiB
Docker

# Go implementation: Minimal image with ONNX Runtime
# Multi-stage build: build with Go + ONNX Runtime deps, runtime with minimal Debian
# Stage 1: Build Go binary
FROM golang:1.23-bookworm AS builder
WORKDIR /app
# Install build dependencies: git, g++, make, ca-certificates, curl, libc6-dev
RUN apt-get update && \
apt-get install -y --no-install-recommends git g++ make ca-certificates curl libc6-dev && \
rm -rf /var/lib/apt/lists/*
# Configure git to avoid terminal prompt
ENV GIT_TERMINAL_PROMPT=0
# Copy Go files
COPY go.mod go.sum ./
COPY main.go .
# Download Go dependencies
RUN go mod download 2>&1
# Download ONNX Runtime shared library for Linux x64
RUN curl -sL -o /tmp/onnx.tgz https://github.com/microsoft/onnxruntime/releases/download/v1.27.0/onnxruntime-linux-x64-1.27.0.tgz
RUN tar -xzf /tmp/onnx.tgz -C /tmp
RUN mkdir -p /usr/local/lib && cp /tmp/onnxruntime-linux-x64-1.27.0/lib/libonnxruntime.so* /usr/local/lib/
RUN rm -rf /tmp/onnxruntime-linux-x64-1.27.0 /tmp/onnx.tgz
# Build Go binary with CGO enabled, baking in the git commit (provided by Coolify)
ARG SOURCE_COMMIT=dev
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 \
go build -ldflags "-X main.version=${SOURCE_COMMIT}" -o /app/vector-server main.go 2>&1
# Stage 2: Runtime
FROM debian:bookworm-slim
WORKDIR /app
# Install runtime dependencies: libstdc++, ca-certificates, curl
RUN apt-get update && \
apt-get install -y --no-install-recommends libstdc++6 ca-certificates curl && \
rm -rf /var/lib/apt/lists/*
# Download model and tokenizer files
RUN curl -sL -o /app/model.onnx https://huggingface.co/onnx-community/bge-small-en-v1.5-ONNX/resolve/main/onnx/model.onnx && \
curl -sL -o /app/model.onnx_data https://huggingface.co/onnx-community/bge-small-en-v1.5-ONNX/resolve/main/onnx/model.onnx_data && \
curl -sL -o /app/tokenizer.json https://huggingface.co/onnx-community/bge-small-en-v1.5-ONNX/resolve/main/tokenizer.json && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Copy binary and shared library from builder
COPY --from=builder /usr/local/lib/libonnxruntime.so* /usr/local/lib/
COPY --from=builder /app/vector-server .
# Set environment for ONNX Runtime
ENV LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
ENV ONNXRUNTIME_SHARED_LIBRARY_PATH=/usr/local/lib/libonnxruntime.so
EXPOSE 8080
ENV PORT=8080
CMD ["./vector-server"]