Split Docker config for dev/prod and fix arch-agnostic builds

- Dockerfile: use --platform=$BUILDPLATFORM + ARG TARGETARCH instead of
  hardcoded GOARCH=arm64, enabling cross-compilation and native builds
  on both arm64 (M1) and amd64 (prod server)
- docker-compose.yml: rewrite for Docker Swarm — image refs, deploy
  sections, overlay network, no container_name/depends_on conditions,
  DB/Redis ports not exposed externally
- docker-compose.dev.yml: rewrite as self-contained dev compose with
  build targets, container_name, depends_on, dev-safe defaults
- Makefile: switch to docker compose v2, point dev targets at
  docker-compose.dev.yml, add docker-build-prod target
- Delete stale docker/Dockerfile (Go 1.21) and docker/docker-compose.yml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
treyt
2026-02-24 21:27:35 -06:00
parent 9f8828a503
commit f1e39f90c7
6 changed files with 274 additions and 251 deletions

View File

@@ -3,7 +3,6 @@
# Binary names
API_BINARY=casera-api
WORKER_BINARY=casera-worker
ADMIN_BINARY=casera-admin
# Build flags
LDFLAGS=-ldflags "-s -w"
@@ -24,12 +23,8 @@ build:
build-worker:
go build $(LDFLAGS) -o bin/$(WORKER_BINARY) ./cmd/worker
# Build the admin binary
build-admin:
go build $(LDFLAGS) -o bin/$(ADMIN_BINARY) ./cmd/admin
# Build all binaries
build-all: build build-worker build-admin
build-all: build build-worker
# Run the API server
run:
@@ -39,10 +34,6 @@ run:
run-worker:
go run ./cmd/worker
# Run the admin
run-admin:
go run ./cmd/admin
# Run tests
test:
go test -v -race -cover ./...
@@ -73,24 +64,30 @@ fmt:
vet:
go vet ./...
# Docker commands
# Docker commands (dev — uses docker-compose.dev.yml)
docker-build:
docker-compose build
docker compose -f docker-compose.dev.yml build
docker-up:
docker-compose up -d
docker compose -f docker-compose.dev.yml up -d
docker-down:
docker-compose down
docker compose -f docker-compose.dev.yml down
docker-logs:
docker-compose logs -f
docker compose -f docker-compose.dev.yml logs -f
docker-dev:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build
docker compose -f docker-compose.dev.yml up --build
docker-restart:
docker-compose down && docker-compose up -d
docker compose -f docker-compose.dev.yml down && docker compose -f docker-compose.dev.yml up -d
# Docker commands (prod — builds production images)
docker-build-prod:
docker build --target api -t $${REGISTRY:-ghcr.io/treytartt}/casera-api:$${TAG:-latest} .
docker build --target worker -t $${REGISTRY:-ghcr.io/treytartt}/casera-worker:$${TAG:-latest} .
docker build --target admin -t $${REGISTRY:-ghcr.io/treytartt}/casera-admin:$${TAG:-latest} .
# Database migrations
migrate-up:
@@ -116,13 +113,12 @@ help:
@echo "Build:"
@echo " deps - Install dependencies"
@echo " build - Build API binary"
@echo " build-all - Build all binaries (API, Worker, Admin)"
@echo " build-all - Build all binaries (API, Worker)"
@echo " clean - Clean build artifacts"
@echo ""
@echo "Run:"
@echo " run - Run API server"
@echo " run-worker - Run background worker"
@echo " run-admin - Run admin panel"
@echo ""
@echo "Test & Lint:"
@echo " test - Run tests"
@@ -131,13 +127,16 @@ help:
@echo " fmt - Format code"
@echo " vet - Vet code"
@echo ""
@echo "Docker:"
@echo " docker-build - Build Docker images"
@echo " docker-up - Start Docker containers"
@echo " docker-down - Stop Docker containers"
@echo " docker-logs - View Docker logs"
@echo " docker-dev - Start in development mode"
@echo " docker-restart- Restart all containers"
@echo "Docker (dev):"
@echo " docker-build - Build dev Docker images"
@echo " docker-up - Start dev containers (detached)"
@echo " docker-down - Stop dev containers"
@echo " docker-logs - View dev container logs"
@echo " docker-dev - Build and start dev containers (foreground)"
@echo " docker-restart - Restart dev containers"
@echo ""
@echo "Docker (prod):"
@echo " docker-build-prod - Build production images (api, worker, admin)"
@echo ""
@echo "Database:"
@echo " migrate-up - Run database migrations"