version: '3.8' services: app: build: context: . dockerfile: Dockerfile container_name: litter-scouts ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 - DATABASE_URL=${DATABASE_URL} - CLERK_SECRET_KEY=${CLERK_SECRET_KEY} - CLERK_WEBHOOK_SECRET=${CLERK_WEBHOOK_SECRET} - UPLOAD_DIR=/app/uploads - MAX_FILE_SIZE=${MAX_FILE_SIZE:-5242880} - OPENWEATHER_API_KEY=${OPENWEATHER_API_KEY} - AHASEND_API_KEY=${AHASEND_API_KEY} - FROM_EMAIL=${FROM_EMAIL} - FRONTEND_URL=${FRONTEND_URL:-http://localhost:3000} volumes: - ./uploads:/app/uploads - ./server/prisma:/app/prisma restart: unless-stopped depends_on: - db-check networks: - litter-scouts-network # Database connectivity check service db-check: image: mysql:8.0 container_name: litter-scouts-db-check command: > sh -c " until mysql -h ${DB_HOST} -P ${DB_PORT} -u ${DB_USER} -p${DB_PASSWORD} -e 'SELECT 1'; do echo 'Waiting for database...'; sleep 2; done; echo 'Database is ready!'; " environment: - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} networks: - litter-scouts-network networks: litter-scouts-network: driver: bridge