Kenny4123 commited on
Commit
b8c3bdf
·
verified ·
1 Parent(s): 6e6370e

Upload 2 files

Browse files
Files changed (2) hide show
  1. Dockerfile +39 -31
  2. kentro_src.zip +2 -2
Dockerfile CHANGED
@@ -1,54 +1,62 @@
1
- # ═══════════════════════════════════════════════════════
2
- # Kentro – Nigerian Draughts Platform
3
- # Multi-stage build: unzip src → build frontend → build backend → runtime
4
- # ═══════════════════════════════════════════════════════
 
 
 
5
 
6
- # ── Stage 1: Unpack source ────────────────────────────────────────────────────
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
- # ── Stage 2: Build React frontend ─────────────────────────────────────────────
14
- FROM node:20-alpine AS frontend-builder
15
- WORKDIR /build
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
- # ── Stage 3: Build Go backend ─────────────────────────────────────────────────
22
- FROM golang:1.22-alpine AS backend-builder
23
- WORKDIR /build
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 go build -ldflags="-s -w" -o server ./cmd/server
 
28
 
29
- # ── Stage 4: Runtime image ────────────────────────────────────────────────────
30
  FROM python:3.11-slim
31
  WORKDIR /app
32
 
33
- RUN apt-get update && apt-get install -y --no-install-recommends \
34
- ca-certificates && rm -rf /var/lib/apt/lists/*
 
 
 
 
 
35
 
36
- RUN pip install --no-cache-dir --quiet \
37
- flask flask-socketio eventlet
 
 
38
 
39
- COPY --from=backend-builder /build/server ./server
40
- COPY --from=frontend-builder /build/dist ./frontend/dist
41
- COPY --from=unpacker /src/engine_bridge.py .
42
- COPY --from=unpacker /src/nigerian_draughts.py .
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
- RUN mkdir -p /data && \
49
- useradd -r -s /bin/false appuser && \
50
- chown -R appuser:appuser /app
51
- RUN chmod +x /app/scan_nigerian
 
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 ["/app/server"]
 
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:f37e0fc1a05e4bd18d2bf16e368bf7b223cb15ab37a62281c93faa448281b266
3
- size 6382680
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f1b845eb54948b1710022db0f0309cebe5139895a8e8164d7789f00c397c6b7d
3
+ size 6380643