168 lines
4.7 KiB
Bash
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 "$@" |