{"owner":"jamwithai","repo":"production-agentic-rag-course","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"compose.yml","servicesCount":13,"services":[{"name":"api","build":".","ports":["8000:8000"],"environment":["OPENSEARCH_HOST=http://opensearch:9200","OPENSEARCH__HOST=http://opensearch:9200","OLLAMA_HOST=http://ollama:11434","POSTGRES_DATABASE_URL=postgresql+psycopg2://rag_user:rag_password@postgres:5432/rag_db","LANGFUSE_HOST=http://langfuse-web:3000","LANGFUSE_DEBUG=true","REDIS__HOST=redis"],"depends_on":["postgres","opensearch","redis"]},{"name":"redis","image":"redis:7-alpine","restart":"unless-stopped","command":"redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru","ports":["6379:6379"],"volumes":["redis_data:/data"]},{"name":"opensearch","image":"opensearchproject/opensearch:2.19.0","restart":"unless-stopped","ports":["9200:9200","9600:9600"],"environment":["discovery.type=single-node","OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m","DISABLE_SECURITY_PLUGIN=true","bootstrap.memory_lock=true"],"volumes":["opensearch_data:/usr/share/opensearch/data"]},{"name":"opensearch-dashboards","image":"opensearchproject/opensearch-dashboards:2.19.0","ports":["5601:5601"],"environment":["OPENSEARCH_HOSTS=http://opensearch:9200","DISABLE_SECURITY_DASHBOARDS_PLUGIN=true"],"depends_on":["opensearch"]},{"name":"airflow","build":{"context":"./airflow","dockerfile":"Dockerfile"},"ports":["8080:8080"],"environment":["AIRFLOW_HOME=/opt/airflow","PYTHONPATH=/opt/airflow/src","POSTGRES_DATABASE_URL=postgresql+psycopg2://rag_user:rag_password@postgres:5432/rag_db","OPENSEARCH_HOST=http://opensearch:9200","OPENSEARCH__HOST=http://opensearch:9200","OLLAMA_HOST=http://ollama:11434","REDIS__HOST=redis"],"volumes":["./airflow/dags:/opt/airflow/dags","airflow_logs:/opt/airflow/logs","./airflow/plugins:/opt/airflow/plugins","./src:/opt/airflow/src"],"depends_on":["postgres"]},{"name":"ollama","image":"ollama/ollama:0.11.2","ports":["11434:11434"],"volumes":["ollama_data:/root/.ollama"]},{"name":"postgres","image":"postgres:16-alpine","restart":"unless-stopped","ports":["5432:5432"],"environment":["POSTGRES_DB=rag_db","POSTGRES_USER=rag_user","POSTGRES_PASSWORD=rag_password","POSTGRES_HOST_AUTH_METHOD=password","PGDATA=/var/lib/postgresql/data/pgdata"],"volumes":["postgres_data:/var/lib/postgresql/data"]},{"name":"clickhouse","image":"clickhouse/clickhouse-server:24.8-alpine","restart":"unless-stopped","environment":["CLICKHOUSE_DB=langfuse","CLICKHOUSE_USER=langfuse","CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1","CLICKHOUSE_PASSWORD=langfuse"],"volumes":["clickhouse_data:/var/lib/clickhouse"]},{"name":"langfuse-worker","image":"docker.io/langfuse/langfuse-worker:3","restart":"unless-stopped","ports":["3030:3030"],"environment":["NEXTAUTH_URL=http://localhost:3001","DATABASE_URL=postgresql://langfuse:langfuse@langfuse-postgres:5432/langfuse","SALT=${LANGFUSE_SALT}","ENCRYPTION_KEY=${LANGFUSE_ENCRYPTION_KEY}","TELEMETRY_ENABLED=false","LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=true","CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000","CLICKHOUSE_URL=http://clickhouse:8123","CLICKHOUSE_USER=langfuse","CLICKHOUSE_PASSWORD=langfuse","CLICKHOUSE_CLUSTER_ENABLED=false","LANGFUSE_USE_AZURE_BLOB=false","LANGFUSE_S3_EVENT_UPLOAD_BUCKET=langfuse","LANGFUSE_S3_EVENT_UPLOAD_REGION=auto","LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=${LANGFUSE_MINIO_ACCESS_KEY}","LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=${LANGFUSE_MINIO_SECRET_KEY}","LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=http://langfuse-minio:9000","LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true","LANGFUSE_S3_EVENT_UPLOAD_PREFIX=events/","LANGFUSE_S3_MEDIA_UPLOAD_BUCKET=langfuse","LANGFUSE_S3_MEDIA_UPLOAD_REGION=auto","LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID=${LANGFUSE_MINIO_ACCESS_KEY}","LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=${LANGFUSE_MINIO_SECRET_KEY}","LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT=http://localhost:9090","LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=true","LANGFUSE_S3_MEDIA_UPLOAD_PREFIX=media/","REDIS_HOST=langfuse-redis","REDIS_PORT=6379","REDIS_AUTH=${LANGFUSE_REDIS_PASSWORD}","REDIS_TLS_ENABLED=false"],"depends_on":["langfuse-postgres","langfuse-minio","langfuse-redis","clickhouse"]},{"name":"langfuse-web","image":"docker.io/langfuse/langfuse:3","restart":"unless-stopped","ports":["3001:3000"],"environment":["NEXTAUTH_URL=http://localhost:3001","NEXTAUTH_SECRET=${LANGFUSE_NEXTAUTH_SECRET}","DATABASE_URL=postgresql://langfuse:langfuse@langfuse-postgres:5432/langfuse","SALT=${LANGFUSE_SALT}","ENCRYPTION_KEY=${LANGFUSE_ENCRYPTION_KEY}","TELEMETRY_ENABLED=false","LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=true","CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000","CLICKHOUSE_URL=http://clickhouse:8123","CLICKHOUSE_USER=langfuse","CLICKHOUSE_PASSWORD=langfuse","CLICKHOUSE_CLUSTER_ENABLED=false","LANGFUSE_USE_AZURE_BLOB=false","LANGFUSE_S3_EVENT_UPLOAD_BUCKET=langfuse","LANGFUSE_S3_EVENT_UPLOAD_REGION=auto","LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=${LANGFUSE_MINIO_ACCESS_KEY}","LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=${LANGFUSE_MINIO_SECRET_KEY}","LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=http://langfuse-minio:9000","LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true","LANGFUSE_S3_EVENT_UPLOAD_PREFIX=events/","LANGFUSE_S3_MEDIA_UPLOAD_BUCKET=langfuse","LANGFUSE_S3_MEDIA_UPLOAD_REGION=auto","LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID=${LANGFUSE_MINIO_ACCESS_KEY}","LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=${LANGFUSE_MINIO_SECRET_KEY}","LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT=http://localhost:9090","LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=true","LANGFUSE_S3_MEDIA_UPLOAD_PREFIX=media/","REDIS_HOST=langfuse-redis","REDIS_PORT=6379","REDIS_AUTH=${LANGFUSE_REDIS_PASSWORD}","REDIS_TLS_ENABLED=false","LANGFUSE_INIT_ORG_ID=default-org","LANGFUSE_INIT_ORG_NAME=RAG Organization","LANGFUSE_INIT_PROJECT_NAME=Agentic RAG","LANGFUSE_INIT_USER_EMAIL=admin@example.com","LANGFUSE_INIT_USER_NAME=Admin User","LANGFUSE_INIT_USER_PASSWORD=admin123"],"depends_on":["langfuse-postgres","langfuse-minio","langfuse-redis","clickhouse"]},{"name":"langfuse-postgres","image":"postgres:17","restart":"unless-stopped","ports":["5433:5432"],"environment":["POSTGRES_USER=langfuse","POSTGRES_PASSWORD=langfuse","POSTGRES_DB=langfuse","POSTGRES_HOST_AUTH_METHOD=password","TZ=UTC","PGTZ=UTC"],"volumes":["langfuse_v3_postgres_data:/var/lib/postgresql/data"]},{"name":"langfuse-redis","image":"docker.io/redis:7","restart":"unless-stopped","command":"--requirepass langfuse_redis_password","ports":["6380:6379"]},{"name":"langfuse-minio","image":"docker.io/minio/minio","restart":"unless-stopped","command":"-c 'mkdir -p /data/langfuse && minio server --address \":9000\" --console-address \":9001\" /data'","ports":["9090:9000","9091:9001"],"environment":["MINIO_ROOT_USER=langfuse_minio","MINIO_ROOT_PASSWORD=langfuse_minio_secret"],"volumes":["langfuse_v3_minio_data:/data"]}],"exposedPorts":["8000","6379","9200","9600","5601","8080","11434","5432","3030","3001","5433","6380","9090","9091"],"dockerRunCommand":"docker run -d --name production-agentic-rag-course -p 8000:8000 --restart always redis:7-alpine","podmanRunCommand":"podman run -d --name production-agentic-rag-course -p 8000:8000 --restart always redis:7-alpine","skopeoInspectCommand":"skopeo inspect docker://docker.io/library/redis:7-alpine","orasPullCommand":"oras pull redis:7-alpine","registryMeta":{"provider":"dockerhub","image":"library/redis","canonicalImage":"docker.io/library/redis:7-alpine","latestTag":"7-alpine","cliCommands":{"dockerRun":"docker run -d --name production-agentic-rag-course -p 8000:8000 --restart always redis:7-alpine","dockerPull":"docker pull redis:7-alpine","podmanRun":"podman run -d --name production-agentic-rag-course -p 8000:8000 --restart always redis:7-alpine","skopeoInspect":"skopeo inspect docker://docker.io/library/redis:7-alpine","orasPull":"oras pull redis:7-alpine","composeYaml":"services:\n  production-agentic-rag-course:\n    image: redis:7-alpine\n    restart: unless-stopped\n    ports:\n      - \"8000:8000\""}}}