services: statusscout-mongodb: image: mongo:7 container_name: statusscout-mongodb restart: always ports: - "27017:27017" volumes: - mongo_data:/data/db networks: - statusscout-net statusscout-redis: image: redis:7 container_name: statusscout-redis restart: always ports: - "6379:6379" volumes: - redis_data:/data networks: - statusscout-net statusscout-api: build: context: . dockerfile: packages/api/Dockerfile container_name: statusscout-api restart: always ports: - "${API_PORT:-4000}:4000" networks: - statusscout-net environment: - FRONTEND_URL=${FRONTEND_URL:-} - API_URL=${API_URL} - APP_URL=${APP_URL} - API_KEY=${API_KEY} - MONGODB_URI=${MONGODB_URI} - SESSION_SECRET=${SESSION_SECRET} - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - SENDER_EMAIL=${SENDER_EMAIL} - PASSWORD_HASH_SECRET=${PASSWORD_HASH_SECRET} - BIRD_WORKSPACE_ID=${BIRD_WORKSPACE_ID} - BIRD_API_KEY=${BIRD_API_KEY} - BIRD_CHANNEL_ID=${BIRD_CHANNEL_ID} - BIRD_NAVIGATOR_ID=${BIRD_NAVIGATOR_ID} - STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY:-} - STRIPE_MONTHLY_PRICE_ID=${STRIPE_MONTHLY_PRICE_ID:-} - STRIPE_YEARLY_PRICE_ID=${STRIPE_YEARLY_PRICE_ID:-} - TURNSTILE_SECRET_KEY=${TURNSTILE_SECRET_KEY:-} - DISABLE_REGISTRATION=${DISABLE_REGISTRATION} depends_on: - statusscout-mongodb - statusscout-redis statusscout-cron: build: context: . dockerfile: packages/cron/Dockerfile container_name: statusscout-cron restart: always networks: - statusscout-net environment: - MONGODB_URI=${MONGODB_URI} - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - API_KEY=${API_KEY} - API_URL=${API_URL} - SEND_EMAILS=${SEND_EMAILS:-} depends_on: - statusscout-mongodb - statusscout-redis statusscout-frontend: build: context: . dockerfile: packages/frontend/Dockerfile args: VITE_BASE_URL: ${APP_URL} VITE_API_URL: ${API_URL} VITE_DISABLE_REGISTRATION: ${DISABLE_REGISTRATION} VITE_ENABLE_ANALYTICS: ${VITE_ENABLE_ANALYTICS:-} VITE_STRIPE_PUBLISHABLE_KEY: ${VITE_STRIPE_PUBLISHABLE_KEY:-} VITE_GTM_ID: ${VITE_GTM_ID:-} VITE_GTM_CONVERSION: ${VITE_GTM_CONVERSION:-} VITE_GTM_REGISTER: ${VITE_GTM_REGISTER:-} container_name: statusscout-frontend restart: always ports: - "${FRONTEND_PORT:-3000}:80" networks: - statusscout-net statusscout-worker: build: context: . dockerfile: packages/worker/Dockerfile container_name: statusscout-worker restart: always stop_signal: SIGTERM stop_grace_period: 60s # give the container time to finish jobs networks: - statusscout-net environment: - MONGODB_URI=${MONGODB_URI} - GOOGLE_PAGESPEED_API_KEY=${GOOGLE_PAGESPEED_API_KEY} - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - CONCURRENT_RUNS=${CONCURRENT_RUNS} - API_KEY=${API_KEY} - API_URL=${API_URL} - APP_URL=${APP_URL} depends_on: - statusscout-mongodb - statusscout-redis volumes: mongo_data: redis_data: networks: statusscout-net: name: statusscout-net