feat: add Docker support for offline deployment with qwen3:14b

Major additions:
- All-in-One Docker image with Ollama + models bundled
- Separate deployment option for existing Ollama installations
- Changed default model from qwen3:8b to qwen3:14b
- Comprehensive deployment documentation

Files added:
- Dockerfile: Basic app-only image
- Dockerfile.allinone: Complete image with Ollama + models
- docker-compose.yml: Easy deployment configuration
- docker-entrypoint.sh: Startup script for all-in-one image
- requirements.txt: Python dependencies
- .dockerignore: Exclude unnecessary files from image

Scripts:
- export-ollama-models.sh: Export models from local Ollama
- build-allinone.sh: Build complete offline-deployable image
- build-and-export.sh: Build and export basic image

Documentation:
- DEPLOYMENT.md: Comprehensive deployment guide
- QUICK_START.md: Quick reference for common tasks

Configuration:
- Updated config.py: DEFAULT_CHAT_MODEL = qwen3:14b
- Updated frontend/opro.html: Page title to 系统提示词优化
This commit is contained in:
2025-12-08 10:10:38 +08:00
parent 65cdcf29dc
commit 26f8e0c648
13 changed files with 897 additions and 3 deletions

105
export-ollama-models.sh Executable file
View File

@@ -0,0 +1,105 @@
#!/bin/bash
# Export Ollama models for offline deployment
# This script copies Ollama models from your local machine
# so they can be bundled into the Docker image
#
# Required models:
# - qwen3:14b (main chat model)
# - qwen3-embedding:4b (embedding model)
set -e
MODELS_DIR="ollama-models"
OLLAMA_MODELS_PATH="$HOME/.ollama"
echo "=========================================="
echo "Exporting Ollama models for offline deployment"
echo "=========================================="
# Check if Ollama is installed
if ! command -v ollama &> /dev/null; then
echo "ERROR: Ollama is not installed or not in PATH"
exit 1
fi
# Check if required models are available
echo ""
echo "Checking for required models..."
MISSING_MODELS=0
if ! ollama list | grep -q "qwen3:14b"; then
echo "ERROR: qwen3:14b model not found!"
echo "Please run: ollama pull qwen3:14b"
MISSING_MODELS=1
fi
if ! ollama list | grep -q "qwen3-embedding:4b"; then
echo "ERROR: qwen3-embedding:4b model not found!"
echo "Please run: ollama pull qwen3-embedding:4b"
MISSING_MODELS=1
fi
if [ $MISSING_MODELS -eq 1 ]; then
echo ""
echo "Please download the required models first:"
echo " ollama pull qwen3:14b"
echo " ollama pull qwen3-embedding:4b"
exit 1
fi
echo "✓ All required models found"
# Check if Ollama directory exists
if [ ! -d "$OLLAMA_MODELS_PATH" ]; then
echo "ERROR: Ollama directory not found at $OLLAMA_MODELS_PATH"
exit 1
fi
# Create export directory
echo ""
echo "Creating export directory: $MODELS_DIR"
rm -rf "$MODELS_DIR"
mkdir -p "$MODELS_DIR"
echo ""
echo "Copying Ollama data from $OLLAMA_MODELS_PATH to $MODELS_DIR..."
echo "This may take several minutes (models are large)..."
# Copy the entire .ollama directory structure
cp -r "$OLLAMA_MODELS_PATH"/* "$MODELS_DIR/"
echo ""
echo "=========================================="
echo "Models exported successfully!"
echo "=========================================="
du -sh "$MODELS_DIR"
echo ""
echo "Directory structure:"
ls -lh "$MODELS_DIR/"
echo ""
echo "Models included:"
if [ -d "$MODELS_DIR/models/manifests/registry.ollama.ai/library" ]; then
ls -lh "$MODELS_DIR/models/manifests/registry.ollama.ai/library/"
fi
echo ""
echo "=========================================="
echo "Next steps:"
echo "=========================================="
echo "1. Build the all-in-one Docker image:"
echo " ./build-allinone.sh"
echo ""
echo "2. Or manually:"
echo " docker build -f Dockerfile.allinone -t system-prompt-optimizer:allinone ."
echo ""
echo "3. Export the image:"
echo " docker save -o system-prompt-optimizer-allinone.tar system-prompt-optimizer:allinone"
echo ""
echo "4. Transfer to target server:"
echo " scp system-prompt-optimizer-allinone.tar user@server:/path/"
echo ""
echo "Note: The final Docker image will be very large (10-20GB) due to the models."