sha256:c62e88e96821dd2ae45382faadf31af48d757a27f243c1c5deed6f578768df8f
Last pushed
about 1 month by jdudash021
Type
Compose
Manifest digest
sha256:c62e88e96821dd2ae45382faadf31af48d757a27f243c1c5deed6f578768df8f
# =============================================================================
# AI-Q Blueprint - Docker Compose
# =============================================================================
#
# Services:
# aiq-agent - Backend API server
# frontend - Next.js UI (aiq-blueprint-ui)
# postgres - PostgreSQL for jobs and checkpoints
#
# Build targets (backend only):
# dev - Development build (includes CLI)
# release - Production build (web only, validates env vars)
#
# Usage:
# # Build locally (default)
# cd deploy/compose
# docker compose --env-file ../.env -f docker-compose.yaml up -d --build
# BUILD_TARGET=release docker compose --env-file ../.env -f docker-compose.yaml up -d --build
#
# # Use pre-built images from registry (skip --build)
# BACKEND_IMAGE=nvcr.io/nvidia/blueprint/aiq-agent:2.2.0 \
# FRONTEND_IMAGE=nvcr.io/nvidia/blueprint/aiq-frontend:2.2.0 \
# docker compose --env-file ../.env -f docker-compose.yaml up -d
#
# Frontend image:
# The frontend is built from frontends/ui/Dockerfile.
#
# =============================================================================
services:
aiq-agent:
image: ${BACKEND_IMAGE:-nvcr.io/nvidia/blueprint/aiq-agent:2.2.0}
build:
context: ../..
dockerfile: deploy/Dockerfile
target: ${BUILD_TARGET:-dev}
container_name: aiq-agent
env_file:
- 93bcdbf2f17f99184f1776f2c799b6d7d5aaf1b485d36468f21001db82c1c061.env
environment:
- APP_ENV=${APP_ENV:-production}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
# Database config (with Docker defaults)
- NAT_JOB_STORE_DB_URL=${NAT_JOB_STORE_DB_URL:-postgresql+asyncpg://aiq:aiq_dev@postgres:5432/aiq_jobs}
- AIQ_CHECKPOINT_DB=${AIQ_CHECKPOINT_DB:-postgresql://aiq:aiq_dev@postgres:5432/aiq_checkpoints}
- AIQ_SUMMARY_DB=${AIQ_SUMMARY_DB:-postgresql+psycopg://aiq:aiq_dev@postgres:5432/aiq_jobs}
# LlamaIndex persistence (used by config_web_default_llamaindex.yml)
- AIQ_CHROMA_DIR=${AIQ_CHROMA_DIR:-/app/data/chroma_data}
# Server config
# LlamaIndex (default)
- CONFIG_FILE=${BACKEND_CONFIG:-/app/configs/config_web_default_llamaindex.yml}
- HOST=0.0.0.0
- PORT=8000
# Upload validation (keep aligned with the frontend)
- FILE_UPLOAD_ACCEPTED_TYPES=${FILE_UPLOAD_ACCEPTED_TYPES:-.pdf,.docx,.txt,.md}
- FILE_UPLOAD_MAX_SIZE_MB=${FILE_UPLOAD_MAX_SIZE_MB:-100}
- FILE_UPLOAD_MAX_FILE_COUNT=${FILE_UPLOAD_MAX_FILE_COUNT:-10}
# Default-on deep-research admission control
- AIQ_MAX_DEEP_RESEARCH_INPUT_CHARS=${AIQ_MAX_DEEP_RESEARCH_INPUT_CHARS:-32768}
- AIQ_MAX_ACTIVE_DEEP_RESEARCH_JOBS_PER_PRINCIPAL=${AIQ_MAX_ACTIVE_DEEP_RESEARCH_JOBS_PER_PRINCIPAL:-5}
- AIQ_MAX_ACTIVE_DEEP_RESEARCH_JOBS_GLOBAL=${AIQ_MAX_ACTIVE_DEEP_RESEARCH_JOBS_GLOBAL:-50}
- AIQ_MAX_DEEP_RESEARCH_SUBMISSIONS_PER_MINUTE=${AIQ_MAX_DEEP_RESEARCH_SUBMISSIONS_PER_MINUTE:-20}
# RAG config
# - RAG_SERVER_URL=${RAG_SERVER_URL:-https://rag-backend}
# - RAG_INGEST_URL=${RAG_INGEST_URL:-https://rag-ingest}
# Dask worker config
- DASK_NWORKERS=${DASK_NWORKERS:-1}
- DASK_NTHREADS=${DASK_NTHREADS:-4}
# Optional: bound per-worker memory (Dask spills/restarts above this)
# - DASK_MEMORY_LIMIT=${DASK_MEMORY_LIMIT:-}
# Optional: recycle workers after this many seconds to drop accumulated state
# - DASK_LIFETIME=${DASK_LIFETIME:-}
# Optional (default true): set to "false" to let workers exit gracefully without respawning
# - DASK_LIFETIME_RESTART=${DASK_LIFETIME_RESTART:-}
ports:
- target: 8000
published: "${PORT:-8000}"
volumes:
- ../../configs:/app/configs:ro
- aiq-data:/app/data
networks:
- aiq-network
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
frontend:
image: ${FRONTEND_IMAGE:-nvcr.io/nvidia/blueprint/aiq-frontend:2.2.0}
build:
context: ../../frontends/ui
dockerfile: deploy/Dockerfile
container_name: aiq-blueprint-ui
environment:
- REQUIRE_AUTH=${REQUIRE_AUTH:-false}
- BACKEND_URL=${BACKEND_URL:-http://aiq-agent:8000}
- FILE_UPLOAD_ACCEPTED_TYPES=${FILE_UPLOAD_ACCEPTED_TYPES:-.pdf,.docx,.txt,.md}
- FILE_UPLOAD_MAX_SIZE_MB=${FILE_UPLOAD_MAX_SIZE_MB:-100}
- FILE_UPLOAD_MAX_FILE_COUNT=${FILE_UPLOAD_MAX_FILE_COUNT:-10}
- FILE_EXPIRATION_CHECK_INTERVAL_HOURS=${FILE_EXPIRATION_CHECK_INTERVAL_HOURS:-}
ports:
- target: 3000
published: "${FRONTEND_PORT:-3000}"
networks:
- aiq-network
depends_on:
- aiq-agent
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.1'
memory: 256M
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: aiq-postgres
environment:
POSTGRES_USER: aiq
POSTGRES_PASSWORD: aiq_dev
POSTGRES_DB: aiq_jobs
ports:
- target: 5432
published: 5432
volumes:
- postgres-data:/var/lib/postgresql/data
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro
networks:
- aiq-network
stdin_open: true
tty: true
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G
healthcheck:
test: ["CMD-SHELL", "pg_isready -U aiq -d aiq_jobs && pg_isready -U aiq -d aiq_checkpoints"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
aiq-data:
driver: local
postgres-data:
driver: local
networks:
aiq-network:
driver: bridge
services:
aiq-agent:
image: nvcr.io/nvidia/blueprint/aiq-agent:2.1.0@sha256:b96469d297ef0e1d02e488b7aeaa2cd401ea2edd7e3dc437a74aab588a7bbcac
frontend:
image: nvcr.io/nvidia/blueprint/aiq-frontend:2.1.0@sha256:488896c0e47613938f09398cf47dc2896f298b8f31c804fb6d304c298a3d262f
postgres:
image: docker.io/library/postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777
docker compose -f oci://jdudash021/test-with-images:1.0.0 upUse the above command to pull and run the Compose file. Learn more.
The PostgreSQL object-relational database system provides reliability and data integrity.
Pulls
1B+
Stars
15012
Last Updated
19 days