# ProxDeploy im Betrieb: postgres, migrate (einmalig), app, worker. # # cp .env.example .env # Schlüssel erzeugen, ADMIN_PASSWORT und APP_URL setzen # docker compose up -d --build # # Die app lauscht auf 127.0.0.1:3000 – davor gehört ein Reverse-Proxy mit TLS (TRUST_PROXY=true). name: proxdeploy x-proxdeploy: &proxdeploy image: proxdeploy:${PROXDEPLOY_VERSION:-latest} build: context: . args: VERSION: ${PROXDEPLOY_VERSION:-} env_file: ${PROXDEPLOY_ENV_DATEI:-.env} environment: DATABASE_URL: postgresql://proxdeploy:${POSTGRES_PASSWORT:?POSTGRES_PASSWORT in .env setzen}@postgres:5432/proxdeploy restart: unless-stopped services: postgres: image: postgres:17.11-trixie restart: unless-stopped environment: POSTGRES_USER: proxdeploy POSTGRES_PASSWORD: ${POSTGRES_PASSWORT:?POSTGRES_PASSWORT in .env setzen} POSTGRES_DB: proxdeploy volumes: - datenbank:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U proxdeploy"] interval: 5s timeout: 5s retries: 20 migrate: <<: *proxdeploy command: ["node", "../worker/migrieren.mjs"] restart: "no" depends_on: postgres: condition: service_healthy app: <<: *proxdeploy ports: - "${PROXDEPLOY_BIND:-127.0.0.1}:${PROXDEPLOY_PORT:-3000}:3000" depends_on: migrate: condition: service_completed_successfully worker: <<: *proxdeploy command: ["node", "../worker/worker.mjs"] healthcheck: disable: true # Lange Aufträge (Template-Bau) dürfen beim Stoppen zu Ende laufen. stop_grace_period: 40s depends_on: migrate: condition: service_completed_successfully volumes: datenbank: