Files
tiennm99 b2be88597c feat(docker): multi-stage Dockerfiles and compose for server + nginx client
- server/Dockerfile: golang:1.23-alpine build → distroless/static-debian12:nonroot (3.5 MB)
- client/Dockerfile: node:22-alpine Vite build → nginx:1.27-alpine runtime
- client/nginx.conf: SPA fallback, aggressive asset caching, gzip
- docker-compose.yml: two services — server :1999, client :8080
- server/.dockerignore / client/.dockerignore: trim build contexts
- server/Makefile: add docker-build/run/stop/logs/smoke targets
- client/vite.config.js: raise chunkSizeWarningLimit to 2000 (Phaser bundle)
- remove server/docker-compose.yaml (superseded by root compose file)
2026-04-11 15:28:15 +07:00

68 lines
1.9 KiB
Makefile

.PHONY: help build run stop logs shell clean test lint proto docker-build docker-run docker-stop docker-logs smoke
# Go binary name
BINARY := gomoku-server
# Docker image tag (server only; full stack uses root docker-compose.yml)
IMAGE := gomoku-server:local
help:
@echo "Gomoku server — available targets:"
@echo ""
@echo " Local dev:"
@echo " make build Build Go binary (./$(BINARY))"
@echo " make run Run server on :1999"
@echo " make test Run Go tests"
@echo " make lint Run go vet"
@echo " make proto Regenerate protobuf stubs"
@echo ""
@echo " Docker (single server image):"
@echo " make docker-build Build gomoku-server:local image"
@echo " make docker-run Run server container on :1999"
@echo " make docker-stop Stop + remove server container"
@echo " make docker-logs Tail server container logs"
@echo ""
@echo " Full stack (root docker-compose.yml):"
@echo " cd .. && docker compose up -d"
@echo ""
@echo " make smoke Quick build + test gate"
# ---------- local dev ----------
build:
go build -o $(BINARY) .
run: build
./$(BINARY) -p 1999
test:
go test ./... -count=1
lint:
go vet ./...
proto:
protoc --go_out=.. --go_opt=module=github.com/tiennm99/gomoku \
--proto_path=../common/proto \
../common/proto/request.proto ../common/proto/response.proto
# ---------- docker (server image only) ----------
docker-build:
docker build -t $(IMAGE) .
docker-run: docker-build
docker run -d --name gomoku-server -p 1999:1999 --restart unless-stopped $(IMAGE)
@echo "Server running: ws://localhost:1999/gomoku"
docker-stop:
docker stop gomoku-server || true
docker rm gomoku-server || true
docker-logs:
docker logs -f gomoku-server
# ---------- smoke gate ----------
smoke: lint test build
@echo "Smoke gate passed: vet + tests + binary build OK"