version: '3.8' services: redis: image: redis:7-alpine container_name: mve-redis ports: - "16379:6379" volumes: - redis_data:/data restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 mve-incrementables-parser: build: . container_name: mve-incrementables-parser ports: - "9876:9876" environment: - AUTH_USERNAME=${AUTH_USERNAME:-admin} - AUTH_PASSWORD_HASH=${AUTH_PASSWORD_HASH} - JWT_SECRET=${JWT_SECRET} - JWT_EXPIRES_MINUTES=${JWT_EXPIRES_MINUTES:-60} - MAX_FILE_MB=${MAX_FILE_MB:-10} - LOG_LEVEL=${LOG_LEVEL:-INFO} - SERVICE_NAME=mve-incrementables-parser - SERVICE_VERSION=1.0.0 - REDIS_URL=redis://redis:6379/0 - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/0 volumes: - ./app:/app/app depends_on: redis: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9876/health"] interval: 30s timeout: 3s retries: 3 start_period: 5s celery-worker: build: . container_name: mve-celery-worker command: celery -A app.core.celery_app worker --loglevel=info --concurrency=2 environment: - AUTH_USERNAME=${AUTH_USERNAME:-admin} - AUTH_PASSWORD_HASH=${AUTH_PASSWORD_HASH} - JWT_SECRET=${JWT_SECRET} - JWT_EXPIRES_MINUTES=${JWT_EXPIRES_MINUTES:-60} - MAX_FILE_MB=${MAX_FILE_MB:-10} - LOG_LEVEL=${LOG_LEVEL:-INFO} - SERVICE_NAME=mve-incrementables-parser - SERVICE_VERSION=1.0.0 - REDIS_URL=redis://redis:6379/0 - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/0 volumes: - ./app:/app/app depends_on: redis: condition: service_healthy restart: unless-stopped volumes: redis_data: