- Add seedIfEmpty: idempotent startup seeding (20 maps per player count, ON CONFLICT DO NOTHING) using cellular-automata generation + validate() - Add continuous evolution loop across all player counts (2/3/4/6) - ACB_MIN_SEED_COUNT and ACB_EVOLUTION_PERIOD configurable via env vars - Add Dockerfile (lean Alpine build, no language runtimes) - Add acb-map-evolver to acb-build.yml CI pipeline - Add staging K8s Deployment manifest Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
743 B
Docker
29 lines
743 B
Docker
FROM golang:1.25-alpine AS builder
|
|
|
|
WORKDIR /build
|
|
|
|
RUN apk --no-cache add git
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY engine/ ./engine/
|
|
COPY cmd/acb-map-evolver/ ./cmd/acb-map-evolver/
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /acb-map-evolver ./cmd/acb-map-evolver
|
|
|
|
FROM alpine:3.21
|
|
|
|
RUN apk --no-cache add ca-certificates tzdata
|
|
|
|
RUN addgroup -g 1000 acb && adduser -D -u 1000 -G acb acb
|
|
|
|
COPY --from=builder /acb-map-evolver /app/acb-map-evolver
|
|
|
|
USER acb
|
|
|
|
# ACB_DATABASE_URL - PostgreSQL connection string (required)
|
|
# ACB_MIN_SEED_COUNT - Maps to seed per player count on startup [default: 20]
|
|
# ACB_EVOLUTION_PERIOD - Sleep between evolution cycles [default: 30m]
|
|
|
|
ENTRYPOINT ["/app/acb-map-evolver"]
|