# Docker Usage Guide ## Quick Start ### Development Environment ```bash # Build and start development container docker-compose -f docker-compose.dev.yml up --build # Or use the build script ./docker-build.sh docker-compose -f docker-compose.dev.yml up ``` ### Production Environment ```bash # Build and start production container docker-compose up --build # Or use the build script ./docker-build.sh docker-compose up ``` ## Available Images - `delphi-database:dev` - Development image with source code mounting and auto-reload - `delphi-database:latest` - Production image optimized for performance - `delphi-database:` - Tagged production image with version ## Environment Variables ### Required for Production - `SECRET_KEY` - JWT secret key (generate with `openssl rand -base64 32`) - `ADMIN_PASSWORD` - Initial admin user password ### Optional Configuration - `DATABASE_URL` - Database connection string (default: sqlite:///app/data/delphi_database.db) - `DEBUG` - Enable debug mode (default: False for production, True for development) - `EXTERNAL_PORT` - External port mapping (default: 6920) - `WORKERS` - Number of Gunicorn workers (default: 4) - `LOG_LEVEL` - Logging level (default: INFO for production, DEBUG for development) ## Container Access The application runs on port 8000 inside the container and is mapped to port 6920 on the host by default. - Application: http://localhost:6920 - Health check: http://localhost:6920/health ## Data Persistence ### Development - Source code: Mounted from host for live reload - Database: Docker volume `delphi_dev_data` - Uploads: Docker volume `delphi_dev_uploads` - Backups: Docker volume `delphi_dev_backups` ### Production - Database: Host directory `./data` (for easy backup) - Uploads: Docker volume `delphi_uploads` - Backups: Docker volume `delphi_backups` ## Troubleshooting ### Container won't start 1. Check if port 6920 is already in use 2. Ensure required environment variables are set 3. Check Docker logs: `docker-compose logs` ### Database issues 1. Check database file permissions in `./data` directory 2. Ensure the container can write to mounted volumes 3. Check initialization logs for admin user creation ### Build failures 1. Ensure Docker daemon is running 2. Clear Docker cache: `docker system prune -f` 3. Rebuild without cache: `docker-compose build --no-cache`