Files
AIUI/docker-compose.yml
T

74 lines
1.6 KiB
YAML

services:
# Nginx reverse proxy
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- frontend
- backend
networks:
- aiui-network
# Frontend (React + Vite built to static files)
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
expose:
- "80"
networks:
- aiui-network
restart: unless-stopped
# Backend (Express + SQLite)
backend:
build:
context: ./backend
dockerfile: Dockerfile
expose:
- "3002"
volumes:
- ./data/backend:/app/data
environment:
- NODE_ENV=production
- PORT=3002
- OPENAI_API_URL=${OPENAI_API_URL:-https://api.openai.com/v1}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- DEFAULT_MODEL=${DEFAULT_MODEL:-gpt-4o-mini}
- JWT_SECRET=${JWT_SECRET:-randomsecret}
- CHROMA_HOST=chromadb
- CHROMA_PORT=8000
networks:
- aiui-network
depends_on:
- chromadb
restart: unless-stopped
# ChromaDB - vector database for RAG
chromadb:
image: chromadb/chroma:latest
expose:
- "8000"
volumes:
- ./data/chromadb:/data/chromadb
environment:
- CHROMA_SERVER_HOST=0.0.0.0
- CHROMA_SERVER_HTTP_PORT=8000
- CHROMA_SERVER_CORS_ALLOW_ORIGINS=["*"]
- IS_PERSISTENT=TRUE
- PERSIST_DIRECTORY=/data/chromadb
networks:
- aiui-network
restart: unless-stopped
networks:
aiui-network:
driver: bridge
volumes:
backend-data:
chromadb-data: