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