services: db: image: postgres:17 restart: unless-stopped environment: POSTGRES_DB: vash POSTGRES_USER: vash POSTGRES_PASSWORD: ***REMOVED*** volumes: - pgdata:/var/lib/postgresql/data ports: - "127.0.0.1:5432:5432" # Only accessible from host healthcheck: test: ["CMD-SHELL", "pg_isready -U vash -d vash"] interval: 10s timeout: 5s retries: 5 app: build: . restart: unless-stopped depends_on: db: condition: service_healthy ports: - "127.0.0.1:3000:3000" # Only accessible from host (nginx proxies) environment: DATABASE_URL: postgresql://vash:***REMOVED***@db:5432/vash ORIGIN: ${ORIGIN:-https://esports.vash.software} BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET} OSU_CLIENT_ID: ${OSU_CLIENT_ID} OSU_CLIENT_SECRET: ${OSU_CLIENT_SECRET} OSU_IRC_USERNAME: ${OSU_IRC_USERNAME} OSU_IRC_PASSWORD: ${OSU_IRC_PASSWORD} NODE_ENV: production env_file: - .env healthcheck: test: ["CMD", "bun", "-e", "fetch('http://localhost:3000/api/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"] interval: 5s timeout: 3s retries: 3 start_period: 10s volumes: pgdata: