services: # Lightweight proxy: gives Caddy the labels to route mintel.localhost → host Mac proxy: image: alpine:latest command: sleep infinity restart: unless-stopped networks: - infra labels: - "caddy=http://${TRAEFIK_HOST:-mintel.localhost}" - "caddy.reverse_proxy=host.docker.internal:3000" # Full Docker dev (use with `pnpm run dev:docker`) app: build: context: . dockerfile: Dockerfile.dev restart: unless-stopped working_dir: /app volumes: - .:/app - node_modules:/app/node_modules - apps_node_modules:/app/apps/web/node_modules - ../at-mintel:/at-mintel - pnpm_store:/pnpm # Cache pnpm store env_file: - .env environment: - NODE_ENV=development - NEXT_TELEMETRY_DISABLED=1 # - CI=true - NPM_TOKEN=${NPM_TOKEN:-} - DATABASE_URI=postgres://${postgres_DB_USER:-payload}:${postgres_DB_PASSWORD:-payload}@postgres-db:5432/${postgres_DB_NAME:-payload} - PAYLOAD_SECRET=dev-secret command: > sh -c "pnpm install --no-frozen-lockfile && pnpm --filter @mintel/web dev" networks: - default - infra labels: - "traefik.enable=true" - "traefik.http.services.${PROJECT_NAME:-mintel-me}.loadbalancer.server.port=3000" - "traefik.docker.network=infra" - "caddy=http://${TRAEFIK_HOST:-mintel.localhost}" - "caddy.reverse_proxy={{upstreams 3000}}" postgres-db: image: postgres:15-alpine restart: always networks: - default env_file: - .env environment: POSTGRES_DB: ${postgres_DB_NAME:-payload} POSTGRES_USER: ${postgres_DB_USER:-payload} POSTGRES_PASSWORD: ${postgres_DB_PASSWORD:-payload} volumes: - ./data/postgres:/var/lib/postgresql/data ports: - "54321:5432" networks: default: name: ${PROJECT_NAME:-mintel-me}-internal infra: external: true volumes: node_modules: apps_node_modules: pnpm_store: