{"owner":"cvat-ai","repo":"cvat","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker-compose.yml","servicesCount":18,"services":[{"name":"cvat_db","image":"postgres:15-alpine","restart":"always","environment":["POSTGRES_USER=root","POSTGRES_DB=cvat","POSTGRES_HOST_AUTH_METHOD=trust"],"volumes":["cvat_db:/var/lib/postgresql/data"]},{"name":"cvat_redis_inmem","image":"redis:7.2.11-alpine","restart":"always","command":"redis-server --save 60 100 --appendonly yes","volumes":["cvat_inmem_db:/data"]},{"name":"cvat_redis_ondisk","image":"apache/kvrocks:2.15.0","restart":"always","command":"--compact-cron 0 3 * * *","volumes":["cvat_cache_db:/var/lib/kvrocks"]},{"name":"cvat_server","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"init run server nginx","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","CLICKHOUSE_HOST=clickhouse","CLICKHOUSE_PORT=8123","CLICKHOUSE_DB=cvat","CLICKHOUSE_USER=user","CLICKHOUSE_PASSWORD=user","DJANGO_MODWSGI_EXTRA_ARGS=","ALLOWED_HOSTS=*","ADAPTIVE_AUTO_ANNOTATION=false","NUMPROCS=2","CVAT_ANALYTICS=1","CVAT_BASE_URL=","ONE_RUNNING_JOB_IN_QUEUE_PER_USER="],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse","cvat_opa"]},{"name":"cvat_worker_utils","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker notifications cleaning","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","CVAT_REDIS_INMEM_PASSWORD=","NUMPROCS=1"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_import","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker import --with-scheduler","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","NUMPROCS=2"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_export","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker export --with-scheduler","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","CLICKHOUSE_HOST=clickhouse","CLICKHOUSE_PORT=8123","CLICKHOUSE_DB=cvat","CLICKHOUSE_USER=user","CLICKHOUSE_PASSWORD=user","NUMPROCS=2"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_annotation","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker annotation","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","NUMPROCS=1"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_webhooks","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker webhooks --with-scheduler","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","NUMPROCS=1"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_quality_reports","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker quality_reports","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","NUMPROCS=1"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_chunks","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker chunks","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","NUMPROCS=2"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_worker_consensus","image":"cvat/server:${CVAT_VERSION:-v2.80.0}","restart":"always","command":"run worker consensus","environment":["CVAT_POSTGRES_HOST=cvat_db","CVAT_REDIS_INMEM_HOST=cvat_redis_inmem","CVAT_REDIS_INMEM_PORT=6379","CVAT_REDIS_ONDISK_HOST=cvat_redis_ondisk","CVAT_REDIS_ONDISK_PORT=6666","CVAT_LOG_IMPORT_ERRORS=true","CVAT_ALLOW_STATIC_CACHE=${CVAT_ALLOW_STATIC_CACHE:-no}","CVAT_DEFAULT_BACKING_CS_ID=","CVAT_NUM_PROXIES=${CVAT_NUM_PROXIES:-1}","DJANGO_LOG_SERVER_HOST=vector","DJANGO_LOG_SERVER_PORT=8282","no_proxy=clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}","SMOKESCREEN_OPTS=${SMOKESCREEN_OPTS:-}","NUMPROCS=1"],"volumes":["cvat_data:/home/django/data","cvat_keys:/home/django/keys","cvat_logs:/home/django/logs"],"depends_on":["cvat_redis_inmem","cvat_redis_ondisk","cvat_db","cvat_clickhouse"]},{"name":"cvat_ui","image":"cvat/ui:${CVAT_VERSION:-v2.80.0}","restart":"always","depends_on":["cvat_server"]},{"name":"traefik","image":"traefik:v3.6","restart":"always","ports":["8080:8080","8090:8090"],"environment":["CVAT_HOST=${CVAT_HOST:-localhost}","DJANGO_LOG_VIEWER_HOST=grafana","DJANGO_LOG_VIEWER_PORT=3000","TRAEFIK_ACCESSLOG_FORMAT=json","TRAEFIK_ACCESSLOG_FIELDS_DEFAULTMODE=drop","TRAEFIK_ACCESSLOG_FIELDS_NAMES_ClientHost=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_DownstreamContentSize=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_DownstreamStatus=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_Duration=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_RequestHost=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_RequestMethod=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_RequestPath=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_RequestPort=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_RequestProtocol=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_RouterName=keep","TRAEFIK_ACCESSLOG_FIELDS_NAMES_StartUTC=keep","TRAEFIK_LOG_FORMAT=json","TRAEFIK_ENTRYPOINTS_web_ADDRESS=:8080","TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT=false","TRAEFIK_PROVIDERS_DOCKER_NETWORK=cvat","TRAEFIK_PROVIDERS_FILE_DIRECTORY=/etc/traefik/rules"],"volumes":["/var/run/docker.sock:/var/run/docker.sock:ro","./components/analytics/grafana_conf.yml:/etc/traefik/rules/grafana_conf.yml:ro"]},{"name":"cvat_opa","image":"openpolicyagent/opa:1.12.2","restart":"always","command":"run --server --addr=:8181 --log-level=error --set=services.cvat.url=http://cvat-server:8080 --set=bundles.cvat.service=cvat --set=bundles.cvat.resource=/api/auth/rules --set=bundles.cvat.polling.min_delay_seconds=5 --set=bundles.cvat.polling.max_delay_seconds=15"},{"name":"cvat_clickhouse","image":"clickhouse/clickhouse-server:23.11-alpine","restart":"always","environment":["CLICKHOUSE_HOST=clickhouse","CLICKHOUSE_PORT=8123","CLICKHOUSE_DB=cvat","CLICKHOUSE_USER=user","CLICKHOUSE_PASSWORD=user"],"volumes":["cvat_events_db:/var/lib/clickhouse/"]},{"name":"cvat_vector","image":"timberio/vector:0.26.0-alpine","restart":"always","environment":["CLICKHOUSE_HOST=clickhouse","CLICKHOUSE_PORT=8123","CLICKHOUSE_DB=cvat","CLICKHOUSE_USER=user","CLICKHOUSE_PASSWORD=user"],"volumes":["./components/analytics/vector/vector.toml:/etc/vector/vector.toml","/vector-data-dir"],"depends_on":["cvat_clickhouse"]},{"name":"cvat_grafana","image":"grafana/grafana-oss:10.1.2","restart":"always","environment":["CLICKHOUSE_HOST=clickhouse","CLICKHOUSE_PORT=8123","CLICKHOUSE_DB=cvat","CLICKHOUSE_USER=user","CLICKHOUSE_PASSWORD=user","GF_PATHS_PROVISIONING=/etc/grafana/provisioning","GF_AUTH_BASIC_ENABLED=false","GF_AUTH_ANONYMOUS_ENABLED=true","GF_AUTH_ANONYMOUS_ORG_ROLE=Admin","GF_AUTH_DISABLE_LOGIN_FORM=true","GF_SERVER_ROOT_URL=http://${CVAT_HOST:-localhost}/analytics","GF_INSTALL_PLUGINS=grafana-clickhouse-datasource 4.8.2","GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/var/lib/grafana/dashboards/all_events.json"],"volumes":["./components/analytics/grafana/dashboards/:/var/lib/grafana/dashboards/:ro"]}],"exposedPorts":["8080","8090"],"dockerRunCommand":"docker run -d --name cvat -p 8080:8080 --restart always postgres:15-alpine","podmanRunCommand":"podman run -d --name cvat -p 8080:8080 --restart always postgres:15-alpine","skopeoInspectCommand":"skopeo inspect docker://docker.io/library/postgres:15-alpine","orasPullCommand":"oras pull postgres:15-alpine","registryMeta":{"provider":"dockerhub","image":"library/postgres","canonicalImage":"docker.io/library/postgres:15-alpine","latestTag":"15-alpine","cliCommands":{"dockerRun":"docker run -d --name cvat -p 8080:8080 --restart always postgres:15-alpine","dockerPull":"docker pull postgres:15-alpine","podmanRun":"podman run -d --name cvat -p 8080:8080 --restart always postgres:15-alpine","skopeoInspect":"skopeo inspect docker://docker.io/library/postgres:15-alpine","orasPull":"oras pull postgres:15-alpine","composeYaml":"services:\n  cvat:\n    image: postgres:15-alpine\n    restart: unless-stopped\n    ports:\n      - \"8080:8080\""}}}