Files
openwebui_engineering_assis…/docker-compose.yaml

155 lines
4.0 KiB
YAML

services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
networks:
- webui
ports:
- "3000:8080"
volumes:
- ./data:/app/backend/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 60s
timeout: 10s
retries: 3
environment:
WEBUI_NAME: Engineering Assistant
WEBUI_AUTH: False
WEBUI_URL: "http://localhost:3000/"
ENABLE_PERSISTENT_CONFIG: True
# OpenAI Config
ENABLE_OPENAI_API: True
OPENAI_API_KEY: ${OPENAI_API_KEY}
AUDIO_STT_ENGINE: openai
AUDIO_STT_OPENAI_API_KEY: ${OPENAI_API_KEY}
AUDIO_TTS_OPENAI_API_KEY: ${OPENAI_API_KEY}
ENABLE_IMAGE_GENERATION: True
IMAGE_GENERATION_ENGINE: openai
IMAGE_GENERATION_MODEL: dall-e-3
IMAGE_SIZE: 1792x1024
IMAGES_OPENAI_API_KEY: ${OPENAI_API_KEY}
# Jupyter API config
ENABLE_CODE_INTERPRETER: True
ENABLE_CODE_EXECUTION: True
CODE_EXECUTION_ENGINE: jupyter
CODE_EXECUTION_JUPYTER_URL: http://jupyter:8888
CODE_EXECUTION_JUPYTER_AUTH: token
CODE_EXECUTION_JUPYTER_AUTH_TOKEN: ${JUPYTER_TOKEN}
CODE_EXECUTION_JUPYTER_TIMEOUT: 300
CODE_INTERPRETER_ENGINE: jupyter
CODE_INTERPRETER_JUPYTER_URL: http://jupyter:8888
CODE_INTERPRETER_JUPYTER_AUTH: token
CODE_INTERPRETER_AUTH_TOKEN: ${JUPYTER_TOKEN}
CODE_INTERPRETER_TIMEOUT: 300
# Search API config
ENABLE_RAG_WEB_SEARCH: True
RAG_WEB_SEARCH_ENGINE: searxng
RAG_WEB_SEARCH_RESULT_COUNT: 3
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
SEARXNG_QUERY_URL: http://searxng:8080/search?q=<query>
# Redis caching config
REDIS_URL: redis://valkey:6379/0
ENABLE_WEBSOCKET_SUPPORT: True
WEBSOCKET_MANAGER: redis
WEBSOCKET_REDIS_URL: redis://valkey:6379/1
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
depends_on:
jupyter:
condition: service_healthy
searxng:
condition: service_healthy
valkey:
condition: service_healthy
blender:
condition: service_healthy
jupyter:
image: quay.io/jupyter/datascience-notebook
container_name: jupyter
volumes:
- jupyter:/home/jovyan/work
networks:
- webui
command: start-notebook.sh --ip=0.0.0.0
environment:
JUPYTER_LAB_ENABLE: yes
JUPYTER_TOKEN: ${JUPYTER_TOKEN}
searxng:
image: docker.io/searxng/searxng:latest
container_name: searxng
volumes:
- searxng:/etc/searxng:rw
- ./searxng/limiter.toml:/usr/local/searxng/searx/limiter.toml
- ./searxng/settings.yml:/usr/local/searxng/searx/settings.yml
- ./searxng/uwsgi.ini:/usr/local/searxng/searx/uwsgi.ini
networks:
- webui
environment:
SEARXNG_HOSTNAME: searxng:8080/
BASE_URL: http://searxng:8080/
INSTANCE_NAME: eng_assistant_test_searxng
restart: unless-stopped
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
valkey:
image: docker.io/valkey/valkey:8.0.1-alpine
container_name: valkey
volumes:
- valkey:/data
command: "valkey-server --save 30 1"
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 1s
timeout: 3s
retries: 5
start_period: 5s
restart: unless-stopped
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
networks:
- webui
blender:
image: ghcr.io/cian-h/simple_blender_server:main
container_name: blender
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:1212/health"]
interval: 30s
timeout: 10s
retries: 3
networks:
- webui
restart: unless-stopped
networks:
webui:
volumes:
searxng:
open-webui:
jupyter:
valkey:
blender: