wget in node:22-alpine can't connect to localhost:3000 — use node's built-in fetch instead, which works correctly.
Port 3000 conflicts with Dokploy. Traefik routes traffic via Docker network, so expose is sufficient. Also remove env_file refs since Dokploy injects env vars directly.
- Multi-stage Dockerfile for Go backend (golang:1.25-alpine -> alpine:3) - Multi-stage Dockerfile for Next.js frontend (bun:1 -> node:22-alpine) - docker-compose.yml with backend + frontend services, health checks - Next.js standalone output + API rewrites to proxy /api/* to backend - .dockerignore files for both services - .env.example documenting required environment variables