services: web: build: context: . dockerfile: Dockerfile args: NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://diyaa.de} NEXT_PUBLIC_SITE_MODE: ${NEXT_PUBLIC_SITE_MODE:-coming-soon} NEXT_PUBLIC_CONTACT_EMAIL: ${NEXT_PUBLIC_CONTACT_EMAIL:-} NEXT_PUBLIC_LINKEDIN_URL: ${NEXT_PUBLIC_LINKEDIN_URL:-} NEXT_PUBLIC_GITHUB_URL: ${NEXT_PUBLIC_GITHUB_URL:-} container_name: ${CONTAINER_NAME:-diyaa-website} depends_on: postgres: condition: service_healthy environment: NODE_ENV: ${NODE_ENV:-production} PORT: 3000 HOSTNAME: 0.0.0.0 NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-1} DATABASE_URL: postgresql://${POSTGRES_USER:-diyaa}:${POSTGRES_PASSWORD:-change-me}@postgres:5432/${POSTGRES_DB:-diyaa}?schema=public UPLOAD_DIR: ${UPLOAD_DIR:-/app/uploads} AUTH_SECRET: ${AUTH_SECRET:-} AUTH_URL: ${AUTH_URL:-https://diyaa.de} NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://diyaa.de} NEXT_PUBLIC_SITE_MODE: ${NEXT_PUBLIC_SITE_MODE:-coming-soon} NEXT_PUBLIC_CONTACT_EMAIL: ${NEXT_PUBLIC_CONTACT_EMAIL:-} NEXT_PUBLIC_LINKEDIN_URL: ${NEXT_PUBLIC_LINKEDIN_URL:-} NEXT_PUBLIC_GITHUB_URL: ${NEXT_PUBLIC_GITHUB_URL:-} healthcheck: test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:3000/api/health || exit 1"] interval: 10s timeout: 5s retries: 5 start_period: 20s restart: unless-stopped volumes: - uploads_data:/app/uploads networks: - traefik-public - app-internal labels: - "traefik.enable=true" - "traefik.http.routers.diyaa-website.rule=Host(`diyaa.de`)" - "traefik.http.routers.diyaa-website.entrypoints=websecure" - "traefik.http.routers.diyaa-website.tls.certresolver=le" - "traefik.http.services.diyaa-website.loadbalancer.server.port=3000" postgres: image: postgres:16-alpine container_name: ${POSTGRES_CONTAINER_NAME:-diyaa-postgres} restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-diyaa} POSTGRES_USER: ${POSTGRES_USER:-diyaa} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me} ports: - "127.0.0.1:${POSTGRES_PORT:-55432}:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-diyaa} -d ${POSTGRES_DB:-diyaa}"] interval: 5s timeout: 5s retries: 10 networks: - app-internal networks: traefik-public: external: true app-internal: driver: bridge volumes: postgres_data: uploads_data: