- Update docker-start.sh to force correct profiles (qdrant, admin) - Fix PostgreSQL port mapping from 5432 to 15432 across all configs - Resolve MCP import conflicts by renaming src/mcp to src/mcp_servers - Fix admin interface StaticFiles mount syntax error - Update LLM client to support both Ollama and OpenAI-compatible APIs - Configure host networking for Discord bot container access - Correct database connection handling for async context managers - Update environment variables and Docker compose configurations - Add missing production dependencies and Dockerfile improvements
4.8 KiB
4.8 KiB
🐳 Docker Setup for Discord Fishbowl
This document explains how to use Docker with Discord Fishbowl for easy PostgreSQL, Redis, and ChromaDB setup.
🚀 Quick Start
Option 1: Interactive Setup (Recommended)
python install.py
# Choose "PostgreSQL with Docker" when prompted
# Setup script will handle everything automatically
Option 2: Manual Docker Setup
# Start services
./docker-services.sh start
# Or with PgAdmin for database management
./docker-services.sh admin
📋 Available Services
| Service | Port | Purpose | Admin URL |
|---|---|---|---|
| PostgreSQL | 15432 | Main database | - |
| Redis | 6379 | Caching & pub/sub | - |
| ChromaDB | 8000 | Vector embeddings | http://localhost:8000 |
| PgAdmin | 8080 | Database admin | http://localhost:8080 |
🔧 Docker Commands
Service Management
# Start all services
./docker-services.sh start
# Start with database admin interface
./docker-services.sh admin
# Check service status
./docker-services.sh status
# View logs
./docker-services.sh logs
# Stop services
./docker-services.sh stop
# Restart services
./docker-services.sh restart
# Clean up (WARNING: deletes all data)
./docker-services.sh clean
Direct Docker Compose
# Start services only
docker compose -f docker-compose.services.yml up -d
# Start with PgAdmin
docker compose -f docker-compose.services.yml --profile admin up -d
# Stop services
docker compose -f docker-compose.services.yml down
# View logs
docker compose -f docker-compose.services.yml logs -f
🔑 Default Credentials
PostgreSQL
- Host: localhost:15432
- Database: discord_fishbowl
- Username: postgres
- Password: fishbowl_password (configurable)
Redis
- Host: localhost:6379
- Password: redis_password (configurable)
PgAdmin (if using admin profile)
- URL: http://localhost:8080
- Email: admin@fishbowl.dev
- Password: admin123
📁 File Structure
discord_fishbowl/
├── docker-compose.yml # Full application stack
├── docker-compose.services.yml # Services only (recommended)
├── docker-services.sh # Management script
├── .env.docker # Docker environment variables
└── DOCKER.md # This file
🔧 Configuration
Environment Variables (.env.docker)
# Database
DB_PASSWORD=your_secure_password
# Redis
REDIS_PASSWORD=your_redis_password
# PgAdmin (optional)
PGADMIN_PASSWORD=admin123
Connecting Discord Fishbowl to Docker Services
When using Docker services, update your Discord Fishbowl configuration:
config/fishbowl_config.json:
{
"database": {
"type": "postgresql",
"host": "localhost",
"port": 15432,
"name": "discord_fishbowl",
"username": "postgres",
"password": "fishbowl_password"
},
"redis": {
"enabled": true,
"host": "localhost",
"port": 6379,
"password": "redis_password"
},
"vector_db": {
"type": "chromadb",
"host": "localhost",
"port": 8000
}
}
🐛 Troubleshooting
Services Won't Start
- Check if Docker is running:
docker info - Check port conflicts:
lsof -i :15432(PostgreSQL),lsof -i :6379(Redis) - Check logs:
./docker-services.sh logs
Permission Errors
# Fix Docker permissions (macOS/Linux)
sudo chmod +x docker-services.sh
Data Persistence
- PostgreSQL data: Docker volume
fishbowl_postgres_data - Redis data: Docker volume
fishbowl_redis_data - ChromaDB data: Docker volume
fishbowl_chroma_data
To backup data:
# Backup PostgreSQL
docker exec fishbowl_postgres pg_dump -U postgres discord_fishbowl > backup.sql
# Restore PostgreSQL
docker exec -i fishbowl_postgres psql -U postgres discord_fishbowl < backup.sql
Reset Everything
# Stop and remove all data (WARNING: destructive)
./docker-services.sh clean
# Restart fresh
./docker-services.sh start
🔗 Integration with Install Script
The install.py script automatically:
- Detects Docker availability
- Offers Docker-based setup options
- Creates
.env.dockerwith your passwords - Starts services automatically
- Configures Discord Fishbowl to use Docker services
🎯 Production Deployment
For production, consider:
- Using the full
docker-compose.yml(includes the app) - Setting strong passwords in environment variables
- Using Docker secrets for sensitive data
- Setting up proper network security
- Regular backups of volumes