This guide covers how to run the GitHub Process Manager using Docker.
- Docker installed
- Docker Compose installed (usually comes with Docker Desktop)
Copy the .env.template to .env and update with your API keys:
cp .env.template .envEdit .env and add:
GEMINI_API_KEY- Your Google Gemini API keyGITHUB_TOKEN- Your GitHub personal access token (optional)GITHUB_REPO_URL- Your GitHub repository URL (optional)
Development Mode (with hot reload):
docker-compose up -dProduction Mode:
docker-compose -f docker-compose.prod.yml up -dOpen your browser and navigate to:
- Application: http://localhost:5000
- Health Check: http://localhost:5000/health
docker-compose logs -f appdocker-compose downdocker-compose up -d --builddocker-compose exec app /bin/bashdocker-compose down -v- Open the project folder in VS Code
- Press
F1and select "Remote-Containers: Reopen in Container" - VS Code will build the container and set up the development environment
- All dependencies will be installed automatically
The dev container includes:
- Python 3.11 environment
- All project dependencies pre-installed
- VS Code extensions for Python development
- Git and GitHub CLI
- Auto-formatting and linting configured
Docker Compose uses named volumes to persist data:
- chroma_data: Vector database storage
- uploads_data: Uploaded documents
- reports_data: Generated Word documents
These volumes persist even when containers are stopped or removed.
If port 5000 is already in use, edit docker-compose.yml:
ports:
- "8080:5000" # Change 8080 to any available portIf you encounter permission issues with volumes:
docker-compose exec app chown -R $(id -u):$(id -g) /app/chroma_db /app/uploads /app/generated_reportsCheck logs for errors:
docker-compose logs appRemove all containers, volumes, and images:
docker-compose down -v
docker rmi github-process-manager_app
docker-compose up -d --buildFor production deployment:
- Use
docker-compose.prod.yml - Set
FLASK_DEBUG=Falsein.env - Use a reverse proxy (nginx/traefik) for HTTPS
- Set up proper secret management
- Configure resource limits
Example with resource limits:
services:
app:
# ... other config
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M- Never commit your
.envfile - Use Docker secrets in production for sensitive data
- Keep the Docker image updated
- Run containers as non-root user in production
- Use read-only filesystem where possible
Build for ARM64 (e.g., Apple Silicon, Raspberry Pi):
docker buildx build --platform linux/arm64 -t github-process-manager:arm64 .Build multi-architecture image:
docker buildx build --platform linux/amd64,linux/arm64 -t github-process-manager:latest .