IntegraChat / DOCKER_GUIDE.md
nothingworry's picture
Add Docker support and remove Ollama
0452a50
# Docker Setup Guide for IntegraChat
## Quick Start
### Option 1: Use PowerShell Script (Easiest for Windows)
```powershell
# Run the helper script
.\run-docker.ps1
```
### Option 2: Build and Run with Docker Compose (Recommended)
```powershell
# PowerShell
docker-compose up -d
# Or with rebuild
docker-compose up -d --build
```
### Build and Run Manually
**PowerShell (Windows):**
```powershell
# Build the image
docker build -t integrachat:latest .
# Run the container (PowerShell uses backticks for line continuation)
docker run -d --name integrachat `
-p 7860:7860 -p 8000:8000 -p 8900:8900 `
-e DOCKER_CONTAINER=1 `
integrachat:latest
# Or use a single line:
docker run -d --name integrachat -p 7860:7860 -p 8000:8000 -p 8900:8900 -e DOCKER_CONTAINER=1 integrachat:latest
```
**Bash/Linux/Mac:**
```bash
# Build the image
docker build -t integrachat:latest .
# Run the container
docker run -d --name integrachat \
-p 7860:7860 -p 8000:8000 -p 8900:8900 \
-e DOCKER_CONTAINER=1 \
integrachat:latest
```
## Container Management
### View Logs
```bash
# All logs (streaming)
docker logs -f integrachat
# Specific service logs
docker exec integrachat tail -f /app/logs/fastapi.log
docker exec integrachat tail -f /app/logs/gradio.log
docker exec integrachat tail -f /app/logs/mcp.log
```
### Stop Container
```bash
docker stop integrachat
```
### Start Container
```bash
docker start integrachat
```
### Remove Container
```bash
docker stop integrachat
docker rm integrachat
```
### Rebuild After Changes
**PowerShell:**
```powershell
docker stop integrachat
docker rm integrachat
docker build -t integrachat:latest .
docker run -d --name integrachat -p 7860:7860 -p 8000:8000 -p 8900:8900 -e DOCKER_CONTAINER=1 integrachat:latest
```
**Bash:**
```bash
docker stop integrachat
docker rm integrachat
docker build -t integrachat:latest .
docker run -d --name integrachat \
-p 7860:7860 -p 8000:8000 -p 8900:8900 \
-e DOCKER_CONTAINER=1 \
integrachat:latest
```
## Access Services
- **Gradio UI**: http://localhost:7860
- **FastAPI API**: http://localhost:8000
- **MCP Server**: http://localhost:8900
- **API Docs**: http://localhost:8000/docs
- **MCP Docs**: http://localhost:8900/docs
## Environment Variables
Create a `.env` file (or use docker-compose.yml) to configure:
```env
# LLM Configuration
LLM_BACKEND=groq # or "ollama"
GROQ_API_KEY=your_key_here
GROQ_MODEL=llama-3.1-8b-instant
# Supabase (optional - for analytics)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your_service_key
# Ports (defaults shown)
API_PORT=8000
MCP_PORT=8900
GRADIO_PORT=7860
```
## Docker Compose
The `docker-compose.yml` file provides:
- Easy service management
- Environment variable support
- Volume mounting for logs
- Health checks
- Auto-restart on failure
### Using Docker Compose
```bash
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild and restart
docker-compose up -d --build
```
## PowerShell-Specific Notes
### Line Continuation
PowerShell uses backticks (`` ` ``) for line continuation, not backslashes (`\`):
```powershell
# βœ… Correct (PowerShell)
docker run -d --name integrachat `
-p 7860:7860 `
-p 8000:8000 `
integrachat:latest
# βœ… Also correct (single line)
docker run -d --name integrachat -p 7860:7860 -p 8000:8000 -p 8900:8900 -e DOCKER_CONTAINER=1 integrachat:latest
# ❌ Wrong (bash syntax - doesn't work in PowerShell)
docker run -d --name integrachat \
-p 7860:7860 \
integrachat:latest
```
### Quick Commands Script
Use `run-docker.ps1` for easy container management:
```powershell
.\run-docker.ps1
```
## Troubleshooting
### Check Container Status
```bash
docker ps -a | grep integrachat
```
### Check Service Health
```bash
# FastAPI health
curl http://localhost:8000/health
# MCP health
curl http://localhost:8900/health
```
### View All Logs
```bash
docker exec integrachat tail -n 100 /app/logs/*.log
```
### Restart Services Inside Container
```bash
# Container will auto-restart services, but you can manually restart:
docker restart integrachat
```
### Clean Up
```bash
# Remove container and image
docker stop integrachat
docker rm integrachat
docker rmi integrachat:latest
# Remove all unused Docker resources
docker system prune -a
```
## Notes
- The container runs all three services (MCP, FastAPI, Gradio) automatically
- Logs are written to `/app/logs/` inside the container
- The entrypoint script handles service startup and health checks
- Supabase warnings are expected if credentials are not configured (analytics will be disabled gracefully)