services: app: image: reg.dev.nervesocket.com/hashex:latest # Run migrations then start the web server command: sh -c "npx prisma db push --accept-data-loss && npm start" ports: - "12131:3000" - "12555:5555" environment: DATABASE_URL: "${DATABASE_URL}" NEXTAUTH_SECRET: "${NEXTAUTH_SECRET}" NEXTAUTH_URL: "${NEXTAUTH_URL}" REDIS_URL: "${REDIS_URL}" MASTODON_INSTANCE: "${MASTODON_INSTANCE}" MASTODON_ACCESS_TOKEN: "${MASTODON_ACCESS_TOKEN}" PRICE_UPDATE_INTERVAL_MINUTES: "${PRICE_UPDATE_INTERVAL_MINUTES:-15}" ZOMBIE_ZERO_COUNT: "${ZOMBIE_ZERO_COUNT:-1000}" HASHTAG_ACTIVE_HOURS: "${HASHTAG_ACTIVE_HOURS:-24}" MAX_POSITION_SHARES: "${MAX_POSITION_SHARES:-100}" MAX_POSITION_VALUE: "${MAX_POSITION_VALUE:-1000}" FUND_MAX_POSITION_SHARES: "${FUND_MAX_POSITION_SHARES:-1000}" FUND_MAX_POSITION_VALUE: "${FUND_MAX_POSITION_VALUE:-10000}" TZ: "America/Toronto" depends_on: postgres: condition: service_healthy redis: condition: service_started restart: unless-stopped worker: image: reg.dev.nervesocket.com/hashex:latest command: npm run worker:prod environment: DATABASE_URL: "${DATABASE_URL}" REDIS_URL: "${REDIS_URL}" MASTODON_INSTANCE: "${MASTODON_INSTANCE}" MASTODON_ACCESS_TOKEN: "${MASTODON_ACCESS_TOKEN}" WORKER_RATE_LIMIT_MS: "${WORKER_RATE_LIMIT_MS:-2000}" PRICE_UPDATE_INTERVAL_MINUTES: "${PRICE_UPDATE_INTERVAL_MINUTES:-15}" HASHTAG_ACTIVE_HOURS: "${HASHTAG_ACTIVE_HOURS:-24}" MAX_PAGES_PER_HASHTAG: "${MAX_PAGES_PER_HASHTAG:-5}" ZOMBIE_ZERO_COUNT: "${ZOMBIE_ZERO_COUNT:-1000}" MASTODON_POST_LIMIT: "${MASTODON_POST_LIMIT:-20}" PRICE_HISTORY_ACTIVE_DAYS: "${PRICE_HISTORY_ACTIVE_DAYS:-7}" PRICE_HISTORY_INACTIVE_HOURS: "${PRICE_HISTORY_INACTIVE_HOURS:-24}" TZ: "America/Toronto" depends_on: postgres: condition: service_healthy redis: condition: service_started restart: unless-stopped postgres: image: postgres:16-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: "${POSTGRES_DB:-hashex}" POSTGRES_USER: "${POSTGRES_USER:-hashex}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-hashex}"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped redis: image: redis:7-alpine command: redis-server --appendonly yes volumes: - redis_data:/data restart: unless-stopped volumes: postgres_data: redis_data: