services: ntfy: image: binwiederhier/ntfy container_name: ntfy platform: linux/amd64 command: ["serve"] env_file: .env.local environment: - TZ=Europe/Zurich # ntfy email via SMTP (Gmail App Password or your SMTP) - NTFY_BASE_URL=${NTFY_BASE_URL:-https://web.windsurf-project.orb.local} - NTFY_SMTP_SENDER_ADDR=${NTFY_SMTP_SENDER_ADDR:-smtp.gmail.com:587} - NTFY_SMTP_SENDER_USER=${NTFY_SMTP_SENDER_USER:-your.name@gmail.com} - NTFY_SMTP_SENDER_PASS=${NTFY_SMTP_SENDER_PASS:-app-password-xxxx} - NTFY_SMTP_SENDER_FROM=${NTFY_SMTP_SENDER_FROM:-your.name@gmail.com} - NTFY_LOG_LEVEL=${NTFY_LOG_LEVEL:-info} user: "4242:4242" volumes: - ../data/ntfy/cache:/var/cache/ntfy - ../data/ntfy/etc/ntfy:/etc/ntfy ports: - "8081:80" restart: unless-stopped schedy: build: ./submodules/schedy container_name: schedy environment: - SCHEDY_API_KEY=${SCHEDY_API_KEY} - TZ=UTC ports: - "8080:8080" restart: unless-stopped frontend: image: node:20-alpine platform: linux/amd64 container_name: mortgagefi-frontend working_dir: /app env_file: .env.local environment: - HOST=0.0.0.0 - PORT=3000 - NEXT_PUBLIC_NTFY_URL=${NEXT_PUBLIC_NTFY_URL:-/ntfy} - NEXT_PUBLIC_SCHEDY_URL=${NEXT_PUBLIC_SCHEDY_URL:-/schedy} volumes: - ./:/app - /app/node_modules command: >- sh -c "apk add --no-cache python3 make g++ git libc6-compat && export PYTHON=/usr/bin/python3 && npm ci --legacy-peer-deps --no-audit --no-fund && mkdir -p .next/static/development && npm run dev -- --hostname 0.0.0.0 --port 3000" ports: - "3000:3000" restart: unless-stopped depends_on: - ntfy - schedy web: image: nginx:alpine platform: linux/amd64 container_name: mortgagefi-proxy ports: - "80:80" volumes: - ../nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - frontend - ntfy - schedy # Usage: # 1) Optionally, set in .env.local: # NEXT_PUBLIC_NTFY_URL=/ntfy # NEXT_PUBLIC_SCHEDY_URL=/schedy # NEXT_PUBLIC_SCHEDY_API_KEY=your-schedy-secret # 2) docker compose up -d # 3) App: http://localhost ; ntfy (proxied): http://localhost/ntfy ; schedy (proxied): http://localhost/schedy