services: db: image: postgres:15 container_name: rss_db environment: - POSTGRES_DB=${DB_NAME} - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASS} volumes: - postgres_data:/var/lib/postgresql/data - ./init-db:/docker-entrypoint-initdb.d restart: always healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] interval: 5s timeout: 5s retries: 5 web: build: context: . args: TORCH_CUDA: cu121 container_name: rss_web command: gunicorn --bind 0.0.0.0:8000 --workers 3 app:app ports: - "8001:8000" environment: - DB_HOST=db - DB_PORT=5432 - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASS=${DB_PASS} - SECRET_KEY=${SECRET_KEY} - WEB_TRANSLATED_DEFAULT=1 - DEFAULT_LANG=es - TRANSLATION_PREFERRED_LANGS=es depends_on: db: condition: service_healthy restart: always scheduler: build: context: . args: TORCH_CUDA: cu121 container_name: rss_scheduler command: python scheduler.py environment: - DB_HOST=db - DB_PORT=5432 - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASS=${DB_PASS} - SECRET_KEY=${SECRET_KEY} depends_on: db: condition: service_healthy restart: always translator: build: context: . args: TORCH_CUDA: cu121 container_name: rss_translator command: python translation_worker.py environment: - DB_HOST=db - DB_PORT=5432 - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASS=${DB_PASS} - TARGET_LANGS=es - TRANSLATOR_BATCH=8 - ENQUEUE=200 - TRANSLATOR_SLEEP_IDLE=5 - MAX_SRC_TOKENS=680 - MAX_NEW_TOKENS=400 - NUM_BEAMS_TITLE=2 - NUM_BEAMS_BODY=1 - UNIVERSAL_MODEL=facebook/nllb-200-1.3B - CHUNK_BY_SENTENCES=True - CHUNK_MAX_TOKENS=700 - CHUNK_OVERLAP_SENTS=1 - CLEAN_ARTICLE=1 - DEVICE=cuda - PYTHONUNBUFFERED=1 - HF_HOME=/root/.cache/huggingface - TOKENIZERS_PARALLELISM=false - PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:64,garbage_collection_threshold:0.9 - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,utility volumes: - hf_cache:/root/.cache/huggingface depends_on: db: condition: service_healthy restart: always gpus: all ner: build: context: . args: TORCH_CUDA: cu121 container_name: rss_ner command: python ner_worker.py environment: - DB_HOST=db - DB_PORT=5432 - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASS=${DB_PASS} - NER_LANG=es - NER_BATCH=64 depends_on: db: condition: service_healthy restart: always volumes: postgres_data: hf_cache: