Spaces:
Runtime error
Runtime error
File size: 2,688 Bytes
b8c3bdf 1de3bb6 b8c3bdf 1de3bb6 85bac43 1de3bb6 b8c3bdf 85bac43 b8c3bdf 1de3bb6 f5d1b6c 1de3bb6 85bac43 b8c3bdf c821d11 1de3bb6 2fbf8ff c821d11 b8c3bdf 85bac43 b8c3bdf 1de3bb6 85bac43 b8c3bdf c821d11 b8c3bdf 1de3bb6 b8c3bdf 1de3bb6 b8c3bdf 1de3bb6 b8c3bdf 1de3bb6 85bac43 1de3bb6 85bac43 b8c3bdf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # ═══════════════════════════════════════════════════════════
# Kentro – Nigerian Draughts | Multi-stage Docker build
# Stage 1: unzip source
# Stage 2: build React frontend
# Stage 3: compile Go backend
# Stage 4: Python runtime (SCAN engine bridge)
# ═══════════════════════════════════════════════════════════
# ── 1. Unpack ─────────────────────────────────────────────
FROM alpine:3.19 AS unpacker
WORKDIR /src
RUN apk add --no-cache unzip
COPY kentro_src.zip .
RUN unzip -q kentro_src.zip && rm kentro_src.zip
# ── 2. Frontend (React + Vite + Tailwind) ─────────────────
FROM node:20-alpine AS frontend
WORKDIR /app
COPY --from=unpacker /src/frontend/package*.json ./
RUN npm install --silent
COPY --from=unpacker /src/frontend/ .
RUN npm run build
# ── 3. Backend (Go) ───────────────────────────────────────
FROM golang:1.22-alpine AS backend
WORKDIR /app
RUN apk add --no-cache gcc musl-dev
COPY --from=unpacker /src/backend/ .
RUN go mod tidy && go mod download
RUN CGO_ENABLED=1 GOOS=linux \
go build -ldflags="-s -w" -o server ./cmd/server
# ── 4. Runtime ────────────────────────────────────────────
FROM python:3.11-slim
WORKDIR /app
RUN apt-get update && \
apt-get install -y --no-install-recommends ca-certificates libgcc-s1 && \
rm -rf /var/lib/apt/lists/*
# Go binary + frontend assets
COPY --from=backend /app/server ./server
COPY --from=frontend /app/dist/ ./frontend/dist/
# Python engine bridge + board logic
COPY --from=unpacker /src/engine_bridge.py .
COPY --from=unpacker /src/nigerian_draughts.py .
COPY --from=unpacker /src/kivy_stub.py .
# SCAN engine binary + config + eval weights
COPY --from=unpacker /src/scan_nigerian ./scan_nigerian
COPY --from=unpacker /src/scan.ini .
COPY --from=unpacker /src/data/ ./data/
# Permissions + non-root user
RUN chmod +x ./scan_nigerian && \
useradd -r -u 1001 -s /bin/false appuser && \
chown -R appuser:appuser /app && \
mkdir -p /data && chown appuser:appuser /data
USER appuser
EXPOSE 7860
ENV PORT=7860 \
STATIC_DIR=/app/frontend/dist
CMD ["./server"]
|