services: db: image: mysql:8 restart: unless-stopped environment: MYSQL_DATABASE: ${MYSQL_DATABASE:-internify_db} MYSQL_USER: ${MYSQL_USER:-internify} MYSQL_PASSWORD: ${MYSQL_PASSWORD:?set MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?set MYSQL_ROOT_PASSWORD} volumes: - db_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-p$$MYSQL_ROOT_PASSWORD"] interval: 10s timeout: 5s retries: 10 app: build: . restart: unless-stopped depends_on: db: condition: service_healthy environment: NODE_ENV: production PORT: 3000 DATABASE_URL: ${DATABASE_URL:-mysql://${MYSQL_USER:-internify}:${MYSQL_PASSWORD}@db:3306/${MYSQL_DATABASE:-internify_db}} ALLOWED_ORIGINS: ${ALLOWED_ORIGINS} JWT_PRIVATE_KEY: ${JWT_PRIVATE_KEY} JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY} RECAPTCHA_SECRET_KEY: ${RECAPTCHA_SECRET_KEY} RECAPTCHA_SITE_KEY: ${RECAPTCHA_SITE_KEY} SWAGGER_ENABLED: ${SWAGGER_ENABLED:-false} AUTH_EMAIL: ${AUTH_EMAIL} AUTH_PASSWORD: ${AUTH_PASSWORD} SEED_ADMIN_EMAIL: ${SEED_ADMIN_EMAIL} SEED_ADMIN_PASSWORD: ${SEED_ADMIN_PASSWORD} SEED_ACTIVE_BATCH_NUMBER: ${SEED_ACTIVE_BATCH_NUMBER} volumes: - uploads:/tmp/uploads - mentor_uploads:/app/src/uploads volumes: db_data: uploads: mentor_uploads: