Containerized build and socket activation docs
Some checks failed
Linux CI / run-tests (push) Has been cancelled
Windows CI / run-tests (push) Has been cancelled
Close inactive issues / close-issues (push) Successful in 34s
Build Containers / build-and-push (cpu) (push) Failing after 36s
Build Containers / build-and-push (cuda) (push) Failing after 35s
Build Containers / build-and-push (intel) (push) Failing after 35s
Build Containers / build-and-push (musa) (push) Failing after 35s
Build Containers / build-and-push (vulkan) (push) Failing after 35s
Build Containers / delete-untagged-containers (push) Has been skipped
Some checks failed
Linux CI / run-tests (push) Has been cancelled
Windows CI / run-tests (push) Has been cancelled
Close inactive issues / close-issues (push) Successful in 34s
Build Containers / build-and-push (cpu) (push) Failing after 36s
Build Containers / build-and-push (cuda) (push) Failing after 35s
Build Containers / build-and-push (intel) (push) Failing after 35s
Build Containers / build-and-push (musa) (push) Failing after 35s
Build Containers / build-and-push (vulkan) (push) Failing after 35s
Build Containers / delete-untagged-containers (push) Has been skipped
This commit is contained in:
60
Build.Containerfile
Normal file
60
Build.Containerfile
Normal file
@@ -0,0 +1,60 @@
|
||||
# Stage 1: Build UI with Node.js
|
||||
FROM node:25.2.1-trixie-slim AS ui-builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy UI source
|
||||
COPY ui/package*.json ./
|
||||
RUN npm install -g typescript && npm ci --only=production
|
||||
RUN npm install --save-dev @types/react @types/react-dom
|
||||
|
||||
# Build UI
|
||||
COPY ui/ ./
|
||||
RUN npm run build
|
||||
|
||||
# Stage 2: Build Go binary with embedded UI
|
||||
FROM golang:1.25.4 AS go-builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy go mod and sum files
|
||||
COPY go.mod go.sum ./
|
||||
|
||||
# Download dependencies
|
||||
RUN go mod download
|
||||
|
||||
# Copy all source code
|
||||
COPY . .
|
||||
|
||||
# Copy UI build artifacts to embed directory
|
||||
#COPY --from=ui-builder /app/build ./ui/build
|
||||
COPY --from=ui-builder /proxy/ui_dist ./proxy/ui_dist
|
||||
# Build the binary (Linux AMD64)
|
||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
||||
go build -ldflags="-X main.commit=$(git rev-parse --short HEAD) -X main.version=local_$(git rev-parse --short HEAD) -X main.date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
|
||||
-o build/llama-swap
|
||||
|
||||
|
||||
FROM ghcr.io/ggml-org/llama.cpp:full-vulkan
|
||||
|
||||
# has to be after the FROM
|
||||
ARG LS_VER=170
|
||||
|
||||
# Add user/group
|
||||
ENV HOME=/app
|
||||
|
||||
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy the binary from builder stage
|
||||
COPY --from=go-builder /app/build/llama-swap .
|
||||
|
||||
|
||||
COPY ./docker/config.example.yaml /config.yaml
|
||||
|
||||
|
||||
ENTRYPOINT [ "/app/llama-swap", "-config", "/config.yaml" ]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user