# Docker Deployment Guide This guide explains how to deploy Digital Galatea using Docker. ## Quick Start ### Using Pre-built Image from Docker Hub ```bash docker run -d \ --name digital-galatea \ -p 7860:7860 \ -e DEEPSEEK_API_KEY=your_deepseek_api_key \ -e INFLECTION_AI_API_KEY=your_inflection_api_key \ codejediondockerhub/digital-galatea:latest ``` ### Using Docker Compose 1. Create a `.env` file with your API keys (see `.env.example`) 2. Run: ```bash docker-compose up -d ``` ## Building the Image ### Build Locally ```bash docker build -t digital-galatea:latest . ``` ### Build and Tag for Docker Hub ```bash docker build -t codejediondockerhub/digital-galatea:latest . ``` ## Publishing to Docker Hub 1. **Login to Docker Hub** ```bash docker login ``` 2. **Tag the Image** (if not already tagged) ```bash docker tag digital-galatea:latest codejediondockerhub/digital-galatea:latest ``` 3. **Push to Docker Hub** ```bash docker push codejediondockerhub/digital-galatea:latest ``` 4. **Push with Version Tag** (optional) ```bash docker tag digital-galatea:latest codejediondockerhub/digital-galatea:v1.0.0 docker push codejediondockerhub/digital-galatea:v1.0.0 ``` ## Environment Variables ### Required Variables - `DEEPSEEK_API_KEY` - Your DeepSeek API key - `INFLECTION_AI_API_KEY` - Your Inflection AI API key ### Optional Variables - `AZURE_TEXT_ANALYTICS_KEY` - Azure Text Analytics key - `AZURE_TEXT_ANALYTICS_ENDPOINT` - Azure endpoint URL - `PORT` - Server port (default: 7860) ## Running the Container ### Basic Run ```bash docker run -d \ --name digital-galatea \ -p 7860:7860 \ -e DEEPSEEK_API_KEY=your_key \ -e INFLECTION_AI_API_KEY=your_key \ codejediondockerhub/digital-galatea:latest ``` ### With Environment File ```bash docker run -d \ --name digital-galatea \ -p 7860:7860 \ --env-file .env \ codejediondockerhub/digital-galatea:latest ``` ### With Volume for Persistence ```bash docker run -d \ --name digital-galatea \ -p 7860:7860 \ -v $(pwd)/data:/app/data \ --env-file .env \ codejediondockerhub/digital-galatea:latest ``` ## Container Management ### View Logs ```bash docker logs digital-galatea docker logs -f digital-galatea # Follow logs ``` ### Stop Container ```bash docker stop digital-galatea ``` ### Start Container ```bash docker start digital-galatea ``` ### Remove Container ```bash docker rm digital-galatea ``` ### Restart Container ```bash docker restart digital-galatea ``` ## Health Checks The container includes a health check endpoint. You can verify it's running: ```bash curl http://localhost:7860/health ``` ## Troubleshooting ### Container Won't Start 1. Check logs: `docker logs digital-galatea` 2. Verify environment variables are set correctly 3. Ensure port 7860 is not already in use ### API Errors 1. Verify API keys are correct 2. Check network connectivity 3. Review application logs for specific error messages ### NLTK Data Download NLTK data is downloaded automatically on first container start. This may take a few minutes. Check logs to see progress. ## Production Considerations 1. **Use Environment Files**: Store sensitive keys in `.env` files (not in version control) 2. **Resource Limits**: Set appropriate memory and CPU limits 3. **Restart Policy**: Use `--restart unless-stopped` for automatic restarts 4. **Health Checks**: Monitor the `/health` endpoint 5. **Logging**: Configure log rotation and monitoring Example production run: ```bash docker run -d \ --name digital-galatea \ --restart unless-stopped \ -p 7860:7860 \ --memory="2g" \ --cpus="2" \ --env-file .env \ codejediondockerhub/digital-galatea:latest ```