111 lines
4.3 KiB
YAML
111 lines
4.3 KiB
YAML
# This file is intended to be placed at the repository root before deployment.
|
|
services:
|
|
redis:
|
|
image: redis:7
|
|
restart: unless-stopped
|
|
|
|
minio:
|
|
image: minio/minio:latest
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: ${S3_ACCESS_KEY_ID:-videoroll}
|
|
MINIO_ROOT_PASSWORD: ${S3_SECRET_ACCESS_KEY:-videorollsecret}
|
|
ports:
|
|
- "${PUBLISH_ADDR:-127.0.0.1}:${MINIO_CONSOLE_PORT:-9001}:9001"
|
|
volumes:
|
|
- ./data/minio:/data
|
|
restart: unless-stopped
|
|
|
|
minio-init:
|
|
image: minio/mc:latest
|
|
depends_on:
|
|
- minio
|
|
entrypoint: /bin/sh
|
|
command: >
|
|
-c "
|
|
until mc alias set local http://minio:9000 ${S3_ACCESS_KEY_ID:-videoroll} ${S3_SECRET_ACCESS_KEY:-videorollsecret}; do
|
|
echo 'waiting for minio...';
|
|
sleep 1;
|
|
done &&
|
|
mc mb -p local/${S3_BUCKET:-videoroll} || true
|
|
"
|
|
restart: "no"
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
args:
|
|
INSTALL_ASR: ${INSTALL_ASR:-1}
|
|
YTDLP_VERSION: ${YTDLP_VERSION:-latest}
|
|
image: videoroll:prod
|
|
environment:
|
|
DATABASE_URL: ${DATABASE_URL}
|
|
REDIS_URL: ${REDIS_URL}
|
|
S3_ENDPOINT_URL: ${S3_ENDPOINT_URL}
|
|
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
|
|
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
|
|
S3_BUCKET: ${S3_BUCKET}
|
|
S3_REGION_NAME: ${S3_REGION_NAME:-us-east-1}
|
|
S3_USE_SSL: ${S3_USE_SSL:-false}
|
|
SUBTITLE_ASR_ENGINE: ${SUBTITLE_ASR_ENGINE:-faster-whisper}
|
|
SUBTITLE_WHISPER_MODEL: ${SUBTITLE_WHISPER_MODEL:-tiny}
|
|
SUBTITLE_WHISPER_DEVICE: ${SUBTITLE_WHISPER_DEVICE:-cpu}
|
|
SUBTITLE_WHISPER_COMPUTE_TYPE: ${SUBTITLE_WHISPER_COMPUTE_TYPE:-int8}
|
|
SUBTITLE_WHISPER_MODEL_DIR: ${SUBTITLE_WHISPER_MODEL_DIR:-/models/whisper}
|
|
SUBTITLE_OPENVINO_MODEL: ${SUBTITLE_OPENVINO_MODEL:-}
|
|
SUBTITLE_OPENVINO_DEVICE: ${SUBTITLE_OPENVINO_DEVICE:-GPU}
|
|
SUBTITLE_OPENVINO_NUM_BEAMS: ${SUBTITLE_OPENVINO_NUM_BEAMS:-1}
|
|
SUBTITLE_OPENVINO_MAX_NEW_TOKENS: ${SUBTITLE_OPENVINO_MAX_NEW_TOKENS:-448}
|
|
FFMPEG_PATH: ${FFMPEG_PATH:-ffmpeg}
|
|
WORK_DIR: ${WORK_DIR:-/work/videoroll}
|
|
UVICORN_ROOT_PATH: ${UVICORN_ROOT_PATH:-/api}
|
|
YOUTUBE_USER_AGENT: "${YOUTUBE_USER_AGENT:-Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36}"
|
|
YOUTUBE_COOKIE_FILE: ${YOUTUBE_COOKIE_FILE:-}
|
|
YOUTUBE_PROXY: ${YOUTUBE_PROXY:-}
|
|
YOUTUBE_EXTRACTOR_ARGS_JSON: ${YOUTUBE_EXTRACTOR_ARGS_JSON:-}
|
|
BILIBILI_PUBLISH_MODE: ${BILIBILI_PUBLISH_MODE:-web}
|
|
CELERY_PUB_CONCURRENCY: ${CELERY_PUB_CONCURRENCY:-1}
|
|
CELERY_BEAT_ENABLED: ${CELERY_BEAT_ENABLED:-true}
|
|
TASK_QUEUE_TICK_INTERVAL_SECONDS: ${TASK_QUEUE_TICK_INTERVAL_SECONDS:-10}
|
|
CORS_ALLOW_ORIGINS: ${CORS_ALLOW_ORIGINS:-http://localhost:3000,http://127.0.0.1:3000}
|
|
SUBTITLE_SERVICE_URL: ${SUBTITLE_SERVICE_URL:-http://localhost:8000/subtitle-service}
|
|
YOUTUBE_INGEST_URL: ${YOUTUBE_INGEST_URL:-http://localhost:8000/youtube-ingest}
|
|
BILIBILI_PUBLISHER_URL: ${BILIBILI_PUBLISHER_URL:-http://localhost:8000/bilibili-publisher}
|
|
STORAGE_CLEANUP_INTERVAL_SECONDS: ${STORAGE_CLEANUP_INTERVAL_SECONDS:-3600}
|
|
INTEL_GPU_RENDER_DEVICE: ${INTEL_GPU_RENDER_DEVICE:-/dev/dri/renderD128}
|
|
volumes:
|
|
- ./data/models:/models
|
|
- ./data/secrets:/secrets
|
|
- ./data/work:/work
|
|
# Expose the whole Intel DRM device tree so both VAAPI and OpenVINO GPU
|
|
# runtimes can discover the render device and initialize compute contexts.
|
|
devices:
|
|
- "/dev/dri:/dev/dri"
|
|
extra_hosts:
|
|
- host.docker.internal:host-gateway
|
|
depends_on:
|
|
redis:
|
|
condition: service_started
|
|
minio:
|
|
condition: service_started
|
|
minio-init:
|
|
condition: service_completed_successfully
|
|
restart: unless-stopped
|
|
|
|
web:
|
|
build:
|
|
context: ./src/web
|
|
args:
|
|
VITE_ORCHESTRATOR_URL: ${VITE_ORCHESTRATOR_URL:-}
|
|
VITE_SUBTITLE_SERVICE_URL: ${VITE_SUBTITLE_SERVICE_URL:-}
|
|
VITE_YOUTUBE_INGEST_URL: ${VITE_YOUTUBE_INGEST_URL:-}
|
|
VITE_BILIBILI_PUBLISHER_URL: ${VITE_BILIBILI_PUBLISHER_URL:-}
|
|
image: videoroll-web:prod
|
|
ports:
|
|
- "${PUBLISH_ADDR:-127.0.0.1}:${WEB_PORT:-3000}:80"
|
|
depends_on:
|
|
app:
|
|
condition: service_started
|
|
restart: unless-stopped
|