zai-proxy/proxy/Dockerfile.minimal
jedarden e7c24a0c08 feat: initial zai-proxy ecosystem repo
Extracted from ardenone-cluster/containers/zai-proxy and
ardenone-cluster/containers/zai-proxy-dashboard.

- proxy/: OpenAI-compatible ZAI reverse proxy (Go, v1.10.0)
  - Token counting, rate limiting, Prometheus metrics, canary support
- dashboard/: Metrics dashboard backend + React frontend (Go, v1.0.0)
  - Prometheus collector, SQLite storage, SSE live updates
- docs/: Operational notes, research, and plan subdirs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 15:53:52 -04:00

36 lines
1.2 KiB
Text

# Minimal Dockerfile avoiding RUN commands that trigger overlayfs issues
FROM docker.io/library/golang:1.23-alpine
LABEL maintainer="ardenone"
LABEL description="Z.AI API proxy with token injection and Prometheus metrics"
WORKDIR /app
# Copy go modules and source
COPY go.mod go.sum* ./
COPY *.go ./
COPY VERSION ./
# Build the binary (this RUN might work better than apk)
RUN go mod download && \
VERSION=$(cat VERSION 2>/dev/null || echo "unknown") && \
COMMIT=${GIT_COMMIT:-$(git rev-parse HEAD 2>/dev/null || echo "unknown")} && \
BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ) && \
CGO_ENABLED=0 GOOS=linux go build -mod=mod \
-ldflags="-s -w -X main.version=$VERSION -X main.commit=$COMMIT -X main.buildTime=$BUILD_TIME" \
-o zai-proxy .
# The golang:1.23-alpine image already has ca-certificates and apk
RUN apk add --no-cache ca-certificates && \
adduser -D -u 1000 proxyuser && \
chmod +x zai-proxy && \
chown proxyuser:proxyuser zai-proxy
USER proxyuser
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
CMD wget -q --spider http://localhost:8080/health || exit 1
ENTRYPOINT ["/zai-proxy"]