Add project and deployment instruction (docs/DEPLOYMENT.md)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
150
docker-compose.yml
Normal file
150
docker-compose.yml
Normal file
@@ -0,0 +1,150 @@
|
||||
services:
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
container_name: ollama
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ollama_data:/root/.ollama
|
||||
networks:
|
||||
- iieasy-ai
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
environment:
|
||||
- NVIDIA_VISIBLE_DEVICES=${NVIDIA_VISIBLE_DEVICES:-all}
|
||||
healthcheck:
|
||||
test: ["CMD", "ollama", "list"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
qdrant:
|
||||
image: qdrant/qdrant:latest
|
||||
container_name: qdrant
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- qdrant_data:/qdrant/storage
|
||||
ports:
|
||||
- "6333:6333" # gRPC API
|
||||
- "6334:6334" # HTTP API (только внутри сети)
|
||||
networks:
|
||||
- iieasy-ai
|
||||
environment:
|
||||
- QDRANT_API_KEY=${QDRANT_API_KEY}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "timeout 1 bash -c '</dev/tcp/localhost/6333' || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
searxng:
|
||||
image: ghcr.io/searxng/searxng:latest
|
||||
container_name: searxng
|
||||
restart: always
|
||||
volumes:
|
||||
- ./searxng:/etc/searxng:rw
|
||||
- searxng_cache:/var/cache/searxng
|
||||
networks:
|
||||
- iieasy-ai
|
||||
environment:
|
||||
- SEARXNG_BASE_URL=http://searxng:8080/
|
||||
# Ограничиваем ресурсы, чтобы поиск не отъедал лишнего
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8080 || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 40s
|
||||
|
||||
open-webui:
|
||||
image: ghcr.io/open-webui/open-webui:v0.8.3
|
||||
container_name: open-webui
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3001:8080" # Изменено с 3000 на 3001 для избежания конфликтов
|
||||
volumes:
|
||||
- openwebui_data:/app/backend/data
|
||||
- ./media:/app/media:ro # Монтирование медиа-файлов для ребрендинга
|
||||
- ./media:/app/web/static/custom:ro # Монтирование кастомных логотипов для веб-интерфейса
|
||||
networks:
|
||||
- iieasy-ai
|
||||
depends_on:
|
||||
qdrant:
|
||||
condition: service_healthy
|
||||
searxng:
|
||||
condition: service_started
|
||||
environment:
|
||||
# Базовая конфигурация
|
||||
- WEBUI_NAME=iiEasyWeb
|
||||
- WEBUI_URL=${DOMAIN_OPENWEBUI}
|
||||
- ENABLE_SIGNUP=false
|
||||
- DEFAULT_USER_ROLE=user
|
||||
|
||||
# Кастомные логотипы и favicon (через Admin Panel или переменные окружения)
|
||||
# Пути к файлам относительно /static/ или полные URL
|
||||
# Можно настроить через Admin Panel: Settings → Appearance → Logo
|
||||
|
||||
# Qdrant векторная БД
|
||||
- VECTOR_DB=qdrant
|
||||
- QDRANT_URI=http://qdrant:6333
|
||||
- QDRANT_API_KEY=${QDRANT_API_KEY}
|
||||
|
||||
# SearXNG веб-поиск (настройки как в рабочем демо)
|
||||
- RAG_WEB_SEARCH_ENGINE=searxng
|
||||
- SEARXNG_QUERY_URL=http://searxng:8080/search?q=<query>&format=json
|
||||
- ENABLE_WEB_SEARCH=true
|
||||
- WEB_SEARCH_RESULT_COUNT=5
|
||||
- WEB_SEARCH_TRUST_ENV=true
|
||||
- WEB_SEARCH_CONCURRENT_REQUESTS=1
|
||||
- USER_AGENT=Open-WebUI-RAG-Bot
|
||||
|
||||
# Ollama API для работы с изображениями
|
||||
- OLLAMA_BASE_URL=http://ollama:11434
|
||||
|
||||
# Authentik OIDC SSO
|
||||
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
|
||||
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}
|
||||
- OAUTH_PROVIDER_NAME=iiEasy ID
|
||||
# Правильный формат для Authentik: полный URL до .well-known/openid-configuration
|
||||
- OPENID_PROVIDER_URL=${OPENID_CONNECT_ISSUER}.well-known/openid-configuration
|
||||
- OPENID_REDIRECT_URI=${DOMAIN_OPENWEBUI}/oauth/oidc/callback
|
||||
- ENABLE_OAUTH_SIGNUP=true
|
||||
- ENABLE_LOGIN_FORM=true
|
||||
# Форма входа включена как fallback, если OAuth не работает
|
||||
# Можно отключить после полной настройки OAuth: ENABLE_LOGIN_FORM=false
|
||||
- OAUTH_MERGE_ACCOUNTS_BY_EMAIL=true
|
||||
|
||||
# Bitwarden CLI интеграция (подготовка)
|
||||
- BW_CLIENTID=${BW_CLIENTID}
|
||||
- BW_CLIENTSECRET=${BW_CLIENTSECRET}
|
||||
|
||||
# Отключение проверки обновлений и аналитики
|
||||
- ENABLE_PERSISTENT_CONFIG=true
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
ollama_data:
|
||||
driver: local
|
||||
qdrant_data:
|
||||
driver: local
|
||||
searxng_cache:
|
||||
driver: local
|
||||
openwebui_data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
iieasy-ai:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user