# Stage 1: Build Ollama with Vulkan support for ARM64/AMD64 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 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app RUN git clone --recursive https://github.com/ollama/ollama.git . # Configure CMake with explicit Vulkan backend parameter RUN cmake -B build . -DOLLAMA_LLAMA_BACKENDS="vulkan" # Compile target with parallel jobs RUN cmake --build build --parallel $(nproc) # Build the main Go executable 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 binary and runtime libraries from builder COPY --from=builder /app/ollama /usr/local/bin/ollama COPY --from=builder /app/build/lib/ollama /usr/local/lib/ollama EXPOSE 11434 ENV OLLAMA_HOST=0.0.0.0:11434 ENV OLLAMA_MODELS=/root/.ollama/models ENTRYPOINT ["ollama", "serve"]