v2
This commit is contained in:
30
ai-templates-0/stacks/bentoml/docker-compose.yml
Normal file
30
ai-templates-0/stacks/bentoml/docker-compose.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
bentoml:
|
||||
image: bentoml/bentoml:${BENTO_VERSION:-latest}
|
||||
container_name: bentoml
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${BENTO_PORT:-3000}:3000"
|
||||
- "${METRICS_PORT:-3001}:3001"
|
||||
volumes:
|
||||
- bentoml_home:/home/bentoml
|
||||
- bentoml_models:/home/bentoml/bentoml/models
|
||||
environment:
|
||||
- BENTOML_HOME=/home/bentoml/bentoml
|
||||
- BENTOML_PORT=3000
|
||||
- BENTOML_METRICS_PORT=3001
|
||||
- BENTOML_LOG_LEVEL=${LOG_LEVEL:-INFO}
|
||||
command: bentoml serve --host 0.0.0.0 --port 3000
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
bentoml_home:
|
||||
bentoml_models:
|
||||
20
ai-templates-0/stacks/chromadb/docker-compose.yml
Normal file
20
ai-templates-0/stacks/chromadb/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
chromadb:
|
||||
image: chromadb/chroma:latest
|
||||
container_name: chromadb
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${CHROMA_PORT:-8000}:8000"
|
||||
volumes:
|
||||
- chroma_data:/chroma/chroma
|
||||
environment:
|
||||
- IS_PERSISTENT=TRUE
|
||||
- PERSIST_DIRECTORY=/chroma/chroma
|
||||
- ANONYMIZED_TELEMETRY=${TELEMETRY:-FALSE}
|
||||
- CHROMA_SERVER_AUTHN_CREDENTIALS=${CHROMA_TOKEN:-}
|
||||
- CHROMA_SERVER_AUTHN_PROVIDER=${CHROMA_AUTH_PROVIDER:-}
|
||||
|
||||
volumes:
|
||||
chroma_data:
|
||||
31
ai-templates-0/stacks/comfyui/docker-compose.yml
Normal file
31
ai-templates-0/stacks/comfyui/docker-compose.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
comfyui:
|
||||
image: yanwk/comfyui-boot:latest
|
||||
container_name: comfyui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${COMFYUI_PORT:-8188}:8188"
|
||||
volumes:
|
||||
- comfyui_data:/root
|
||||
- comfyui_models:/root/ComfyUI/models
|
||||
- comfyui_output:/root/ComfyUI/output
|
||||
- comfyui_input:/root/ComfyUI/input
|
||||
- comfyui_custom_nodes:/root/ComfyUI/custom_nodes
|
||||
environment:
|
||||
- CLI_ARGS=${CLI_ARGS:---listen 0.0.0.0 --port 8188}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
comfyui_data:
|
||||
comfyui_models:
|
||||
comfyui_output:
|
||||
comfyui_input:
|
||||
comfyui_custom_nodes:
|
||||
38
ai-templates-0/stacks/deepstream/docker-compose.yml
Normal file
38
ai-templates-0/stacks/deepstream/docker-compose.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
deepstream:
|
||||
image: nvcr.io/nvidia/deepstream:${DS_VERSION:-7.1}-triton-multiarch
|
||||
container_name: deepstream
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${RTSP_PORT:-8554}:8554"
|
||||
- "${REST_PORT:-9000}:9000"
|
||||
volumes:
|
||||
- deepstream_apps:/opt/nvidia/deepstream/deepstream/sources/apps
|
||||
- deepstream_models:/opt/nvidia/deepstream/deepstream/samples/models
|
||||
- deepstream_configs:/opt/nvidia/deepstream/deepstream/samples/configs
|
||||
- deepstream_streams:/opt/nvidia/deepstream/deepstream/samples/streams
|
||||
environment:
|
||||
- CUDA_VISIBLE_DEVICES=${CUDA_DEVICES:-all}
|
||||
- DISPLAY=${DISPLAY:-}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu, video, compute, utility]
|
||||
runtime: nvidia
|
||||
network_mode: ${NETWORK_MODE:-bridge}
|
||||
shm_size: ${SHM_SIZE:-2g}
|
||||
# Required for video device access on edge nodes
|
||||
privileged: ${PRIVILEGED:-false}
|
||||
devices:
|
||||
- /dev/video0:/dev/video0
|
||||
|
||||
volumes:
|
||||
deepstream_apps:
|
||||
deepstream_models:
|
||||
deepstream_configs:
|
||||
deepstream_streams:
|
||||
19
ai-templates-0/stacks/flowise/docker-compose.yml
Normal file
19
ai-templates-0/stacks/flowise/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
flowise:
|
||||
image: flowiseai/flowise:latest
|
||||
container_name: flowise
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${FLOWISE_PORT:-3000}:3000"
|
||||
volumes:
|
||||
- flowise_data:/root/.flowise
|
||||
environment:
|
||||
- FLOWISE_USERNAME=${FLOWISE_USERNAME:-admin}
|
||||
- FLOWISE_PASSWORD=${FLOWISE_PASSWORD:-changeme}
|
||||
- APIKEY_PATH=/root/.flowise
|
||||
- LOG_PATH=/root/.flowise/logs
|
||||
|
||||
volumes:
|
||||
flowise_data:
|
||||
26
ai-templates-0/stacks/jupyter-gpu/docker-compose.yml
Normal file
26
ai-templates-0/stacks/jupyter-gpu/docker-compose.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
jupyter:
|
||||
image: quay.io/jupyter/pytorch-notebook:latest
|
||||
container_name: jupyter-gpu
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${JUPYTER_PORT:-8888}:8888"
|
||||
volumes:
|
||||
- jupyter_data:/home/jovyan/work
|
||||
environment:
|
||||
- JUPYTER_TOKEN=${JUPYTER_TOKEN:-changeme}
|
||||
- JUPYTER_ENABLE_LAB=yes
|
||||
- GRANT_SUDO=${GRANT_SUDO:-yes}
|
||||
user: root
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
jupyter_data:
|
||||
19
ai-templates-0/stacks/label-studio/docker-compose.yml
Normal file
19
ai-templates-0/stacks/label-studio/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
label-studio:
|
||||
image: heartexlabs/label-studio:latest
|
||||
container_name: label-studio
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${LS_PORT:-8080}:8080"
|
||||
volumes:
|
||||
- label_studio_data:/label-studio/data
|
||||
environment:
|
||||
- LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
|
||||
- LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/label-studio/data/files
|
||||
- LABEL_STUDIO_USERNAME=${LS_USER:-admin@example.com}
|
||||
- LABEL_STUDIO_PASSWORD=${LS_PASSWORD:-changeme}
|
||||
|
||||
volumes:
|
||||
label_studio_data:
|
||||
18
ai-templates-0/stacks/langflow/docker-compose.yml
Normal file
18
ai-templates-0/stacks/langflow/docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
langflow:
|
||||
image: langflowai/langflow:latest
|
||||
container_name: langflow
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${LANGFLOW_PORT:-7860}:7860"
|
||||
volumes:
|
||||
- langflow_data:/app/langflow
|
||||
environment:
|
||||
- LANGFLOW_DATABASE_URL=sqlite:////app/langflow/langflow.db
|
||||
- LANGFLOW_CONFIG_DIR=/app/langflow
|
||||
- LANGFLOW_AUTO_LOGIN=${AUTO_LOGIN:-true}
|
||||
|
||||
volumes:
|
||||
langflow_data:
|
||||
33
ai-templates-0/stacks/litellm/docker-compose.yml
Normal file
33
ai-templates-0/stacks/litellm/docker-compose.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
litellm:
|
||||
image: ghcr.io/berriai/litellm:main-latest
|
||||
container_name: litellm
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${LITELLM_PORT:-4000}:4000"
|
||||
volumes:
|
||||
- litellm_config:/app/config
|
||||
environment:
|
||||
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:-sk-master-key}
|
||||
- LITELLM_LOG_LEVEL=${LOG_LEVEL:-INFO}
|
||||
- DATABASE_URL=postgresql://${PG_USER:-litellm}:${PG_PASSWORD:-litellm}@litellm-db:5432/${PG_DB:-litellm}
|
||||
command: --config /app/config/litellm_config.yaml --port 4000
|
||||
depends_on:
|
||||
- litellm-db
|
||||
|
||||
litellm-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: litellm-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=${PG_USER:-litellm}
|
||||
- POSTGRES_PASSWORD=${PG_PASSWORD:-litellm}
|
||||
- POSTGRES_DB=${PG_DB:-litellm}
|
||||
volumes:
|
||||
- litellm_pg_data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
litellm_config:
|
||||
litellm_pg_data:
|
||||
25
ai-templates-0/stacks/localai/docker-compose.yml
Normal file
25
ai-templates-0/stacks/localai/docker-compose.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
localai:
|
||||
image: localai/localai:latest-gpu-nvidia-cuda-12
|
||||
container_name: localai
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${LOCALAI_PORT:-8080}:8080"
|
||||
volumes:
|
||||
- localai_models:/build/models
|
||||
environment:
|
||||
- THREADS=${THREADS:-4}
|
||||
- CONTEXT_SIZE=${CONTEXT_SIZE:-4096}
|
||||
- MODELS_PATH=/build/models
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
localai_models:
|
||||
76
ai-templates-0/stacks/minio-mlops/docker-compose.yml
Normal file
76
ai-templates-0/stacks/minio-mlops/docker-compose.yml
Normal file
@@ -0,0 +1,76 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mlflow:
|
||||
image: ghcr.io/mlflow/mlflow:${MLFLOW_VERSION:-latest}
|
||||
container_name: mlflow-server
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${MLFLOW_PORT:-5000}:5000"
|
||||
environment:
|
||||
- MLFLOW_TRACKING_URI=postgresql://${PG_USER:-mlflow}:${PG_PASSWORD:-mlflow}@mlflow-db:5432/${PG_DB:-mlflow}
|
||||
- MLFLOW_S3_ENDPOINT_URL=http://mlflow-minio:9000
|
||||
- AWS_ACCESS_KEY_ID=${MINIO_ROOT_USER:-mlflow}
|
||||
- AWS_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD:-mlflow123}
|
||||
- MLFLOW_DEFAULT_ARTIFACT_ROOT=s3://${ARTIFACT_BUCKET:-mlflow-artifacts}/
|
||||
command: >
|
||||
mlflow server
|
||||
--host 0.0.0.0
|
||||
--port 5000
|
||||
--backend-store-uri postgresql://${PG_USER:-mlflow}:${PG_PASSWORD:-mlflow}@mlflow-db:5432/${PG_DB:-mlflow}
|
||||
--default-artifact-root s3://${ARTIFACT_BUCKET:-mlflow-artifacts}/
|
||||
--serve-artifacts
|
||||
depends_on:
|
||||
mlflow-db:
|
||||
condition: service_healthy
|
||||
mlflow-minio:
|
||||
condition: service_started
|
||||
|
||||
mlflow-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: mlflow-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=${PG_USER:-mlflow}
|
||||
- POSTGRES_PASSWORD=${PG_PASSWORD:-mlflow}
|
||||
- POSTGRES_DB=${PG_DB:-mlflow}
|
||||
volumes:
|
||||
- mlflow_pg_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${PG_USER:-mlflow}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
mlflow-minio:
|
||||
image: quay.io/minio/minio:latest
|
||||
container_name: mlflow-minio
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${MINIO_API_PORT:-9000}:9000"
|
||||
- "${MINIO_CONSOLE_PORT:-9001}:9001"
|
||||
volumes:
|
||||
- mlflow_minio_data:/data
|
||||
environment:
|
||||
- MINIO_ROOT_USER=${MINIO_ROOT_USER:-mlflow}
|
||||
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-mlflow123}
|
||||
command: server /data --console-address ':9001'
|
||||
|
||||
# Init container to create the default bucket
|
||||
mlflow-minio-init:
|
||||
image: quay.io/minio/mc:latest
|
||||
container_name: mlflow-minio-init
|
||||
depends_on:
|
||||
- mlflow-minio
|
||||
entrypoint: >
|
||||
/bin/sh -c "
|
||||
sleep 5;
|
||||
mc alias set myminio http://mlflow-minio:9000 ${MINIO_ROOT_USER:-mlflow} ${MINIO_ROOT_PASSWORD:-mlflow123};
|
||||
mc mb --ignore-existing myminio/${ARTIFACT_BUCKET:-mlflow-artifacts};
|
||||
mc anonymous set download myminio/${ARTIFACT_BUCKET:-mlflow-artifacts};
|
||||
exit 0;
|
||||
"
|
||||
|
||||
volumes:
|
||||
mlflow_pg_data:
|
||||
mlflow_minio_data:
|
||||
20
ai-templates-0/stacks/mlflow/docker-compose.yml
Normal file
20
ai-templates-0/stacks/mlflow/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mlflow:
|
||||
image: ghcr.io/mlflow/mlflow:latest
|
||||
container_name: mlflow
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${MLFLOW_PORT:-5000}:5000"
|
||||
volumes:
|
||||
- mlflow_data:/mlflow
|
||||
command: >
|
||||
mlflow server
|
||||
--host 0.0.0.0
|
||||
--port 5000
|
||||
--backend-store-uri sqlite:///mlflow/mlflow.db
|
||||
--default-artifact-root /mlflow/artifacts
|
||||
|
||||
volumes:
|
||||
mlflow_data:
|
||||
20
ai-templates-0/stacks/n8n-ai/docker-compose.yml
Normal file
20
ai-templates-0/stacks/n8n-ai/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
n8n:
|
||||
image: docker.n8n.io/n8nio/n8n:latest
|
||||
container_name: n8n-ai
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${N8N_PORT:-5678}:5678"
|
||||
volumes:
|
||||
- n8n_data:/home/node/.n8n
|
||||
environment:
|
||||
- N8N_BASIC_AUTH_ACTIVE=${N8N_AUTH:-true}
|
||||
- N8N_BASIC_AUTH_USER=${N8N_USER:-admin}
|
||||
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD:-changeme}
|
||||
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
|
||||
- N8N_AI_ENABLED=true
|
||||
|
||||
volumes:
|
||||
n8n_data:
|
||||
36
ai-templates-0/stacks/nvidia-nim/docker-compose.yml
Normal file
36
ai-templates-0/stacks/nvidia-nim/docker-compose.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
nim:
|
||||
image: nvcr.io/nim/${NIM_MODEL:-meta/llama-3.1-8b-instruct}:${NIM_VERSION:-latest}
|
||||
container_name: nvidia-nim
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${NIM_PORT:-8000}:8000"
|
||||
volumes:
|
||||
- nim_cache:/opt/nim/.cache
|
||||
environment:
|
||||
- NGC_API_KEY=${NGC_API_KEY}
|
||||
- NIM_MAX_MODEL_LEN=${MAX_MODEL_LEN:-4096}
|
||||
- NIM_GPU_MEMORY_UTILIZATION=${GPU_MEM_UTIL:-0.9}
|
||||
- NIM_MAX_BATCH_SIZE=${MAX_BATCH:-256}
|
||||
- NIM_LOG_LEVEL=${LOG_LEVEL:-INFO}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
shm_size: ${SHM_SIZE:-16g}
|
||||
ulimits:
|
||||
memlock: -1
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8000/v1/health/ready"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
start_period: 120s
|
||||
|
||||
volumes:
|
||||
nim_cache:
|
||||
25
ai-templates-0/stacks/ollama/docker-compose.yml
Normal file
25
ai-templates-0/stacks/ollama/docker-compose.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
container_name: ollama
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${OLLAMA_PORT:-11434}:11434"
|
||||
volumes:
|
||||
- ollama_data:/root/.ollama
|
||||
environment:
|
||||
- OLLAMA_HOST=0.0.0.0
|
||||
- OLLAMA_NUM_PARALLEL=${OLLAMA_NUM_PARALLEL:-4}
|
||||
- OLLAMA_MAX_LOADED_MODELS=${OLLAMA_MAX_LOADED_MODELS:-2}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
ollama_data:
|
||||
57
ai-templates-0/stacks/onnx-runtime/docker-compose.yml
Normal file
57
ai-templates-0/stacks/onnx-runtime/docker-compose.yml
Normal file
@@ -0,0 +1,57 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
# GPU variant — for data center / cloud nodes
|
||||
onnx-runtime-gpu:
|
||||
image: mcr.microsoft.com/onnxruntime/server:latest
|
||||
container_name: onnx-runtime-gpu
|
||||
restart: unless-stopped
|
||||
profiles: ["gpu"]
|
||||
ports:
|
||||
- "${HTTP_PORT:-8001}:8001"
|
||||
- "${GRPC_PORT:-50051}:50051"
|
||||
volumes:
|
||||
- onnx_models:/models
|
||||
environment:
|
||||
- ORT_LOG_LEVEL=${LOG_LEVEL:-WARNING}
|
||||
command: >
|
||||
--model_path /models/${MODEL_FILE:-model.onnx}
|
||||
--http_port 8001
|
||||
--grpc_port 50051
|
||||
--num_threads ${NUM_THREADS:-4}
|
||||
--execution_provider ${EXEC_PROVIDER:-cuda}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
|
||||
# CPU variant — for edge nodes, ARM, resource-constrained environments
|
||||
onnx-runtime-cpu:
|
||||
image: mcr.microsoft.com/onnxruntime/server:latest
|
||||
container_name: onnx-runtime-cpu
|
||||
restart: unless-stopped
|
||||
profiles: ["cpu", "edge"]
|
||||
ports:
|
||||
- "${HTTP_PORT:-8001}:8001"
|
||||
- "${GRPC_PORT:-50051}:50051"
|
||||
volumes:
|
||||
- onnx_models:/models
|
||||
environment:
|
||||
- ORT_LOG_LEVEL=${LOG_LEVEL:-WARNING}
|
||||
command: >
|
||||
--model_path /models/${MODEL_FILE:-model.onnx}
|
||||
--http_port 8001
|
||||
--grpc_port 50051
|
||||
--num_threads ${NUM_THREADS:-4}
|
||||
--execution_provider cpu
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "${CPU_LIMIT:-2.0}"
|
||||
memory: ${MEM_LIMIT:-2G}
|
||||
|
||||
volumes:
|
||||
onnx_models:
|
||||
39
ai-templates-0/stacks/open-webui/docker-compose.yml
Normal file
39
ai-templates-0/stacks/open-webui/docker-compose.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
open-webui:
|
||||
image: ghcr.io/open-webui/open-webui:main
|
||||
container_name: open-webui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${OPEN_WEBUI_PORT:-3000}:8080"
|
||||
volumes:
|
||||
- open_webui_data:/app/backend/data
|
||||
environment:
|
||||
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://ollama:11434}
|
||||
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY:-changeme}
|
||||
- ENABLE_SIGNUP=${ENABLE_SIGNUP:-true}
|
||||
depends_on:
|
||||
- ollama
|
||||
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
container_name: ollama
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${OLLAMA_PORT:-11434}:11434"
|
||||
volumes:
|
||||
- ollama_data:/root/.ollama
|
||||
environment:
|
||||
- OLLAMA_HOST=0.0.0.0
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
open_webui_data:
|
||||
ollama_data:
|
||||
55
ai-templates-0/stacks/prefect/docker-compose.yml
Normal file
55
ai-templates-0/stacks/prefect/docker-compose.yml
Normal file
@@ -0,0 +1,55 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
prefect-server:
|
||||
image: prefecthq/prefect:${PREFECT_VERSION:-3-latest}
|
||||
container_name: prefect-server
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${PREFECT_PORT:-4200}:4200"
|
||||
volumes:
|
||||
- prefect_data:/root/.prefect
|
||||
- prefect_flows:/flows
|
||||
environment:
|
||||
- PREFECT_SERVER_API_HOST=0.0.0.0
|
||||
- PREFECT_SERVER_API_PORT=4200
|
||||
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${PG_USER:-prefect}:${PG_PASSWORD:-prefect}@prefect-db:5432/${PG_DB:-prefect}
|
||||
- PREFECT_SERVER_ANALYTICS_ENABLED=${ANALYTICS:-false}
|
||||
command: prefect server start
|
||||
depends_on:
|
||||
prefect-db:
|
||||
condition: service_healthy
|
||||
|
||||
prefect-worker:
|
||||
image: prefecthq/prefect:${PREFECT_VERSION:-3-latest}
|
||||
container_name: prefect-worker
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- prefect_flows:/flows
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
- PREFECT_API_URL=http://prefect-server:4200/api
|
||||
command: prefect worker start --pool default-agent-pool --type docker
|
||||
depends_on:
|
||||
- prefect-server
|
||||
|
||||
prefect-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: prefect-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=${PG_USER:-prefect}
|
||||
- POSTGRES_PASSWORD=${PG_PASSWORD:-prefect}
|
||||
- POSTGRES_DB=${PG_DB:-prefect}
|
||||
volumes:
|
||||
- prefect_pg_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${PG_USER:-prefect}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
volumes:
|
||||
prefect_data:
|
||||
prefect_flows:
|
||||
prefect_pg_data:
|
||||
19
ai-templates-0/stacks/qdrant/docker-compose.yml
Normal file
19
ai-templates-0/stacks/qdrant/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
qdrant:
|
||||
image: qdrant/qdrant:latest
|
||||
container_name: qdrant
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${QDRANT_HTTP_PORT:-6333}:6333"
|
||||
- "${QDRANT_GRPC_PORT:-6334}:6334"
|
||||
volumes:
|
||||
- qdrant_data:/qdrant/storage
|
||||
- qdrant_snapshots:/qdrant/snapshots
|
||||
environment:
|
||||
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY:-}
|
||||
|
||||
volumes:
|
||||
qdrant_data:
|
||||
qdrant_snapshots:
|
||||
60
ai-templates-0/stacks/ray-cluster/docker-compose.yml
Normal file
60
ai-templates-0/stacks/ray-cluster/docker-compose.yml
Normal file
@@ -0,0 +1,60 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
ray-head:
|
||||
image: rayproject/ray-ml:${RAY_VERSION:-2.40.0}-py310-gpu
|
||||
container_name: ray-head
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${DASHBOARD_PORT:-8265}:8265"
|
||||
- "${CLIENT_PORT:-10001}:10001"
|
||||
- "${GCS_PORT:-6379}:6379"
|
||||
- "${SERVE_PORT:-8000}:8000"
|
||||
volumes:
|
||||
- ray_data:/home/ray/data
|
||||
- ray_results:/home/ray/ray_results
|
||||
command: >
|
||||
ray start --head
|
||||
--port=6379
|
||||
--dashboard-host=0.0.0.0
|
||||
--dashboard-port=8265
|
||||
--num-gpus=${HEAD_GPUS:-1}
|
||||
--block
|
||||
environment:
|
||||
- RAY_GRAFANA_HOST=http://grafana:3000
|
||||
- RAY_PROMETHEUS_HOST=http://prometheus:9090
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
shm_size: ${SHM_SIZE:-8g}
|
||||
|
||||
ray-worker:
|
||||
image: rayproject/ray-ml:${RAY_VERSION:-2.40.0}-py310-gpu
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- ray-head
|
||||
command: >
|
||||
ray start
|
||||
--address=ray-head:6379
|
||||
--num-gpus=${WORKER_GPUS:-1}
|
||||
--num-cpus=${WORKER_CPUS:-4}
|
||||
--block
|
||||
volumes:
|
||||
- ray_data:/home/ray/data
|
||||
deploy:
|
||||
replicas: ${NUM_WORKERS:-1}
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
shm_size: ${SHM_SIZE:-8g}
|
||||
|
||||
volumes:
|
||||
ray_data:
|
||||
ray_results:
|
||||
@@ -0,0 +1,25 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
stable-diffusion-webui:
|
||||
image: universonic/stable-diffusion-webui:latest
|
||||
container_name: stable-diffusion-webui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${SD_PORT:-7860}:7860"
|
||||
volumes:
|
||||
- sd_data:/data
|
||||
- sd_output:/output
|
||||
environment:
|
||||
- CLI_ARGS=${CLI_ARGS:---listen --api --xformers}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
sd_data:
|
||||
sd_output:
|
||||
@@ -0,0 +1,35 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
text-gen-webui:
|
||||
image: atinoda/text-generation-webui:default-nvidia
|
||||
container_name: text-generation-webui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${WEBUI_PORT:-7860}:7860"
|
||||
- "${API_PORT:-5000}:5000"
|
||||
- "${STREAM_PORT:-5005}:5005"
|
||||
volumes:
|
||||
- tgw_characters:/app/characters
|
||||
- tgw_loras:/app/loras
|
||||
- tgw_models:/app/models
|
||||
- tgw_presets:/app/presets
|
||||
- tgw_prompts:/app/prompts
|
||||
- tgw_extensions:/app/extensions
|
||||
environment:
|
||||
- EXTRA_LAUNCH_ARGS=${EXTRA_LAUNCH_ARGS:---listen --api}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
tgw_characters:
|
||||
tgw_loras:
|
||||
tgw_models:
|
||||
tgw_presets:
|
||||
tgw_prompts:
|
||||
tgw_extensions:
|
||||
43
ai-templates-0/stacks/triton/docker-compose.yml
Normal file
43
ai-templates-0/stacks/triton/docker-compose.yml
Normal file
@@ -0,0 +1,43 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
triton:
|
||||
image: nvcr.io/nvidia/tritonserver:${TRITON_VERSION:-24.08}-py3
|
||||
container_name: triton-inference-server
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${HTTP_PORT:-8000}:8000"
|
||||
- "${GRPC_PORT:-8001}:8001"
|
||||
- "${METRICS_PORT:-8002}:8002"
|
||||
volumes:
|
||||
- triton_models:/models
|
||||
command: >
|
||||
tritonserver
|
||||
--model-repository=/models
|
||||
--strict-model-config=${STRICT_CONFIG:-false}
|
||||
--log-verbose=${LOG_VERBOSE:-0}
|
||||
--exit-on-error=${EXIT_ON_ERROR:-false}
|
||||
--rate-limit=${RATE_LIMIT:-off}
|
||||
--model-control-mode=${MODEL_CONTROL:-poll}
|
||||
--repository-poll-secs=${POLL_INTERVAL:-30}
|
||||
environment:
|
||||
- CUDA_VISIBLE_DEVICES=${CUDA_DEVICES:-all}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
shm_size: ${SHM_SIZE:-1g}
|
||||
ulimits:
|
||||
memlock: -1
|
||||
stack: 67108864
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8000/v2/health/ready"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
volumes:
|
||||
triton_models:
|
||||
29
ai-templates-0/stacks/vllm/docker-compose.yml
Normal file
29
ai-templates-0/stacks/vllm/docker-compose.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
vllm:
|
||||
image: vllm/vllm-openai:latest
|
||||
container_name: vllm
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${VLLM_PORT:-8000}:8000"
|
||||
volumes:
|
||||
- vllm_cache:/root/.cache/huggingface
|
||||
environment:
|
||||
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN:-}
|
||||
command: >
|
||||
--model ${MODEL_NAME:-meta-llama/Llama-3.1-8B-Instruct}
|
||||
--max-model-len ${MAX_MODEL_LEN:-4096}
|
||||
--gpu-memory-utilization ${GPU_MEM_UTIL:-0.90}
|
||||
--tensor-parallel-size ${TENSOR_PARALLEL:-1}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
ipc: host
|
||||
|
||||
volumes:
|
||||
vllm_cache:
|
||||
22
ai-templates-0/stacks/weaviate/docker-compose.yml
Normal file
22
ai-templates-0/stacks/weaviate/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
weaviate:
|
||||
image: cr.weaviate.io/semitechnologies/weaviate:latest
|
||||
container_name: weaviate
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${WEAVIATE_HTTP_PORT:-8080}:8080"
|
||||
- "${WEAVIATE_GRPC_PORT:-50051}:50051"
|
||||
volumes:
|
||||
- weaviate_data:/var/lib/weaviate
|
||||
environment:
|
||||
- QUERY_DEFAULTS_LIMIT=25
|
||||
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=${ANON_ACCESS:-true}
|
||||
- PERSISTENCE_DATA_PATH=/var/lib/weaviate
|
||||
- DEFAULT_VECTORIZER_MODULE=${VECTORIZER:-none}
|
||||
- CLUSTER_HOSTNAME=node1
|
||||
- ENABLE_MODULES=${MODULES:-text2vec-transformers,generative-openai}
|
||||
|
||||
volumes:
|
||||
weaviate_data:
|
||||
19
ai-templates-0/stacks/whisper/docker-compose.yml
Normal file
19
ai-templates-0/stacks/whisper/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
whisper:
|
||||
image: onerahmet/openai-whisper-asr-webservice:latest-gpu
|
||||
container_name: whisper-asr
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${WHISPER_PORT:-9000}:9000"
|
||||
environment:
|
||||
- ASR_MODEL=${ASR_MODEL:-base}
|
||||
- ASR_ENGINE=${ASR_ENGINE:-openai_whisper}
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
Reference in New Issue
Block a user