49 lines
1.2 KiB
Plaintext
49 lines
1.2 KiB
Plaintext
# 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 .
|
|
|
|
# Use Ollama's official preset configuration for Vulkan compilation
|
|
RUN cmake -S llama/server --preset vulkan
|
|
RUN cmake --build build/llama-server-vulkan --parallel $(nproc)
|
|
RUN cmake --install build/llama-server-vulkan --component llama-server --prefix /app/dist
|
|
|
|
# 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 and the Vulkan backend runtime payload
|
|
COPY --from=builder /app/ollama /usr/local/bin/ollama
|
|
COPY --from=builder /app/dist /usr/local
|
|
|
|
EXPOSE 11434
|
|
ENV OLLAMA_HOST=0.0.0.0:11434
|
|
ENV OLLAMA_MODELS=/root/.ollama/models
|
|
|
|
ENTRYPOINT ["ollama", "serve"] |