services: ocr_perf_api: build: context: . image: ocr_perf_api container_name: ocr_perf_api ports: - "8892:8892" volumes: - ./:/workspace env_file: - .env environment: - TZ=Asia/Seoul - CELERY_BROKER_URL=redis://ocr_perf_redis:6379/0 - CELERY_RESULT_BACKEND=redis://ocr_perf_redis:6379/1 - TESSDATA_PREFIX=/usr/share/tessdata restart: always networks: - ocr_perf_net deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] depends_on: ocr_perf_redis: condition: service_healthy ocr_perf_worker: image: ocr_perf_api container_name: ocr_perf_worker volumes: - ./:/workspace environment: - TZ=Asia/Seoul - CELERY_BROKER_URL=redis://ocr_perf_redis:6379/0 - CELERY_RESULT_BACKEND=redis://ocr_perf_redis:6379/1 - TESSDATA_PREFIX=/usr/share/tessdata command: celery -A tasks worker --loglevel=info --concurrency=4 networks: - ocr_perf_net deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] depends_on: ocr_perf_redis: condition: service_healthy ocr_perf_flower: image: ocr_perf_api container_name: ocr_perf_flower environment: - TZ=Asia/Seoul - FLOWER_UNAUTHENTICATED_API=true - TESSDATA_PREFIX=/usr/share/tessdata entrypoint: celery --broker=redis://ocr_perf_redis:6379/0 flower --port=5557 ports: - "5557:5557" networks: - ocr_perf_net depends_on: - ocr_perf_redis ocr_perf_redis: image: redis:7-alpine container_name: ocr_perf_redis command: [ "redis-server", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru", ] ports: - "6383:6379" restart: always networks: - ocr_perf_net healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: ocr_perf_net: driver: bridge