From e54cfd006dac1dc3e28bce74fd88c5ba0cd57e0f Mon Sep 17 00:00:00 2001 From: LordMathis Date: Mon, 29 Sep 2025 21:17:40 +0200 Subject: [PATCH] Add Dockerfile for building from source --- docker/Dockerfile.source | 64 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docker/Dockerfile.source diff --git a/docker/Dockerfile.source b/docker/Dockerfile.source new file mode 100644 index 0000000..2b4482f --- /dev/null +++ b/docker/Dockerfile.source @@ -0,0 +1,64 @@ +# WebUI build stage +FROM node:20-alpine AS webui-builder + +WORKDIR /webui + +# Copy webui package files +COPY webui/package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy webui source +COPY webui/ ./ + +# Build webui +RUN npm run build + +# Go build stage +FROM golang:1.24-alpine AS builder + +# Install build dependencies +RUN apk add --no-cache git ca-certificates + +# Set working directory +WORKDIR /build + +# Copy go mod files +COPY go.mod go.sum ./ + +# Download dependencies +RUN go mod download + +# Copy source code +COPY cmd/ ./cmd/ +COPY pkg/ ./pkg/ +COPY apidocs/ ./apidocs/ +COPY webui/webui.go ./webui/ + +# Copy built webui from webui-builder +COPY --from=webui-builder /webui/dist ./webui/dist + +# Build the application +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-w -s" -o llamactl ./cmd/server + +# Final stage +FROM alpine:latest + +# Install runtime dependencies +RUN apk --no-cache add ca-certificates + +# Create data directory +RUN mkdir -p /data + +# Set working directory +WORKDIR /data + +# Copy binary from builder +COPY --from=builder /build/llamactl /usr/local/bin/llamactl + +# Expose the default port +EXPOSE 8080 + +# Set llamactl as the entrypoint +ENTRYPOINT ["llamactl"] \ No newline at end of file