legal-doc-masker/export-images.sh

168 lines
4.7 KiB
Bash

#!/bin/bash
# Docker Image Export Script
# Exports all project Docker images for migration to another environment
set -e
echo "🚀 Legal Document Masker - Docker Image Export"
echo "=============================================="
# Function to check if Docker is running
check_docker() {
if ! docker info > /dev/null 2>&1; then
echo "❌ Docker is not running. Please start Docker and try again."
exit 1
fi
echo "✅ Docker is running"
}
# Function to check if images exist
check_images() {
echo "🔍 Checking for required images..."
local missing_images=()
if ! docker images | grep -q "legal-doc-masker-backend-api"; then
missing_images+=("legal-doc-masker-backend-api")
fi
if ! docker images | grep -q "legal-doc-masker-frontend"; then
missing_images+=("legal-doc-masker-frontend")
fi
if ! docker images | grep -q "legal-doc-masker-mineru-api"; then
missing_images+=("legal-doc-masker-mineru-api")
fi
if ! docker images | grep -q "redis:alpine"; then
missing_images+=("redis:alpine")
fi
if [ ${#missing_images[@]} -ne 0 ]; then
echo "❌ Missing images: ${missing_images[*]}"
echo "Please build the images first using: docker-compose build"
exit 1
fi
echo "✅ All required images found"
}
# Function to create export directory
create_export_dir() {
local export_dir="docker-images-export-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$export_dir"
cd "$export_dir"
echo "📁 Created export directory: $export_dir"
echo "$export_dir"
}
# Function to export images
export_images() {
local export_dir="$1"
echo "📦 Exporting Docker images..."
# Export backend image
echo " 📦 Exporting backend-api image..."
docker save legal-doc-masker-backend-api:latest -o backend-api.tar
# Export frontend image
echo " 📦 Exporting frontend image..."
docker save legal-doc-masker-frontend:latest -o frontend.tar
# Export mineru image
echo " 📦 Exporting mineru-api image..."
docker save legal-doc-masker-mineru-api:latest -o mineru-api.tar
# Export redis image
echo " 📦 Exporting redis image..."
docker save redis:alpine -o redis.tar
echo "✅ All images exported successfully!"
}
# Function to show export summary
show_summary() {
echo ""
echo "📊 Export Summary:"
echo "=================="
ls -lh *.tar
echo ""
echo "📋 Files to transfer:"
echo "===================="
for file in *.tar; do
echo " - $file"
done
echo ""
echo "💾 Total size: $(du -sh . | cut -f1)"
}
# Function to create compressed archive
create_archive() {
echo ""
echo "🗜️ Creating compressed archive..."
local archive_name="legal-doc-masker-images-$(date +%Y%m%d-%H%M%S).tar.gz"
tar -czf "$archive_name" *.tar
echo "✅ Created archive: $archive_name"
echo "📊 Archive size: $(du -sh "$archive_name" | cut -f1)"
echo ""
echo "📋 Transfer options:"
echo "==================="
echo "1. Transfer individual .tar files"
echo "2. Transfer compressed archive: $archive_name"
}
# Function to show transfer instructions
show_transfer_instructions() {
echo ""
echo "📤 Transfer Instructions:"
echo "========================"
echo ""
echo "Option 1: Transfer individual files"
echo "-----------------------------------"
echo "scp *.tar user@target-server:/path/to/destination/"
echo ""
echo "Option 2: Transfer compressed archive"
echo "-------------------------------------"
echo "scp legal-doc-masker-images-*.tar.gz user@target-server:/path/to/destination/"
echo ""
echo "Option 3: USB Drive"
echo "-------------------"
echo "cp *.tar /Volumes/USB_DRIVE/docker-images/"
echo "cp legal-doc-masker-images-*.tar.gz /Volumes/USB_DRIVE/"
echo ""
echo "Option 4: Cloud Storage"
echo "----------------------"
echo "aws s3 cp *.tar s3://your-bucket/docker-images/"
echo "aws s3 cp legal-doc-masker-images-*.tar.gz s3://your-bucket/docker-images/"
}
# Main execution
main() {
check_docker
check_images
local export_dir=$(create_export_dir)
export_images "$export_dir"
show_summary
create_archive
show_transfer_instructions
echo ""
echo "🎉 Export completed successfully!"
echo "📁 Export location: $(pwd)"
echo ""
echo "Next steps:"
echo "1. Transfer the files to your target environment"
echo "2. Use import-images.sh on the target environment"
echo "3. Copy docker-compose.yml and other config files"
}
# Run main function
main "$@"