# Stage 1: Build Ollama with Vulkan support FROM ubuntu:24.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ build-essential \ cmake \ git \ curl \ golang-go \ libvulkan-dev \ vulkan-tools \ glslang-tools \ ninja-build \ && rm -rf /var/lib/apt/lists/* WORKDIR /app RUN git clone --recursive https://github.com/ollama/ollama.git . # Correctly target Ollama's embedded llama.cpp path with Vulkan enabled RUN cmake -S llm/llama.cpp -B build/vulkan -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release RUN cmake --build build/vulkan --parallel $(nproc) # Build the main Go application binary RUN go build -o ollama . # Stage 2: Minimal Runtime Image FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ libvulkan1 \ mesa-vulkan-drivers \ vulkan-tools \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Copy the compiled Go binary COPY --from=builder /app/ollama /usr/local/bin/ollama EXPOSE 11434 ENV OLLAMA_HOST=0.0.0.0:11434 ENV OLLAMA_MODELS=/root/.ollama/models ENTRYPOINT ["ollama", "serve"]