version: '3.8' services: # ── Frontend (nginx serving built Vue app) ─────────────────── app: build: context: . dockerfile: Dockerfile container_name: indeedhub-app restart: unless-stopped ports: - "7777:7777" depends_on: seeder: condition: service_completed_successfully networks: - indeedhub-network labels: - "com.centurylinklabs.watchtower.enable=true" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7777/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # ── Nostr Relay (stores comments, reactions, profiles) ─────── relay: image: scsibug/nostr-rs-relay:latest container_name: indeedhub-relay restart: unless-stopped volumes: - relay-data:/usr/src/app/db networks: - indeedhub-network # ── Seeder (one-shot: seeds test data into relay, then exits) ─ # wait-for-relay.mjs handles readiness polling before seeding. seeder: build: context: . dockerfile: Dockerfile.seed container_name: indeedhub-seeder depends_on: - relay environment: - RELAY_URL=ws://relay:8080 - ORIGIN=http://localhost:7777 networks: - indeedhub-network restart: "no" networks: indeedhub-network: driver: bridge volumes: relay-data: