Go(Gin) + React(Vite + shadcn/ui + Tailwind) 前后端分离,全中文 UI - 集群管理:Kubeconfig / Token 双接入,kubectl + helm 部署 - 主机管理:SSH 密钥 / 密码双认证,CPU/内存/磁盘使用率监控,SSH 错误中文友好提示 - 存储配置、部署管理、系统设置 - Docker 镜像内置 kubectl + helm,开箱即用 - run.sh 一键启停(start/stop/restart/status) Co-Authored-By: Claude <noreply@anthropic.com>
54 lines
1.5 KiB
Docker
54 lines
1.5 KiB
Docker
# Build stage - Frontend
|
|
FROM node:20-alpine AS frontend-builder
|
|
WORKDIR /app/frontend
|
|
COPY frontend/package*.json ./
|
|
RUN npm ci
|
|
COPY frontend/ ./
|
|
RUN npm run build
|
|
|
|
# Build stage - Backend
|
|
FROM golang:1.24-alpine AS backend-builder
|
|
RUN apk add --no-cache git ca-certificates
|
|
ENV GOTOOLCHAIN=local
|
|
WORKDIR /app/backend
|
|
COPY backend/go.* ./
|
|
RUN go mod download
|
|
COPY backend/ ./
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o bin/lokideploy .
|
|
|
|
# Final stage - 内置 kubectl + helm,部署开箱即用
|
|
FROM alpine:3.19
|
|
RUN apk --no-cache add ca-certificates openssh-client curl bash
|
|
ARG TARGETARCH=amd64
|
|
# 安装 kubectl(兼容大多数集群版本,±1 版本原则)
|
|
RUN curl -fsSL -o /usr/local/bin/kubectl \
|
|
"https://dl.k8s.io/release/v1.31.0/bin/linux/${TARGETARCH}/kubectl" \
|
|
&& chmod +x /usr/local/bin/kubectl
|
|
# 安装 helm
|
|
RUN mkdir -p /tmp/helm \
|
|
&& curl -fsSL "https://get.helm.sh/helm-v3.16.3-linux-${TARGETARCH}.tar.gz" \
|
|
| tar -xz -C /tmp/helm \
|
|
&& mv "/tmp/helm/linux-${TARGETARCH}/helm" /usr/local/bin/helm \
|
|
&& chmod +x /usr/local/bin/helm \
|
|
&& rm -rf /tmp/helm
|
|
WORKDIR /app
|
|
|
|
# Copy frontend build
|
|
COPY --from=frontend-builder /app/frontend/dist ./dist
|
|
|
|
# Copy backend binary
|
|
COPY --from=backend-builder /app/backend/bin/lokideploy ./lokideploy
|
|
RUN chmod +x ./lokideploy
|
|
|
|
# Create data directory
|
|
RUN mkdir -p /app/data
|
|
|
|
# Environment
|
|
ENV DATA_DIR=/app/data
|
|
ENV SERVER_PORT=8080
|
|
ENV JWT_SECRET=lokideploy-secret-key-change-in-production
|
|
EXPOSE 8080
|
|
|
|
# Serve frontend as static files
|
|
CMD ["./lokideploy"]
|