Major addition: Full Docker implementation for Windows, macOS, and Linux support New Features: - Docker container with PBS client in Debian environment - Platform-specific docker-compose files (linux/windows/macos) - Daemon mode with internal cron scheduler - One-shot backup mode for manual execution - Optional REST API server for remote management - Health monitoring and status endpoints - Automatic encryption key generation and management Docker Structure: - docker/Dockerfile - Container build definition - docker/scripts/ - Entrypoint, backup, healthcheck, and API scripts - docker/build.sh - Build script for Docker image - docker/deploy.sh - Interactive deployment script - docker/docker-compose-*.yml - Platform-specific configurations Documentation: - docker/README-DOCKER.md - Complete Docker documentation - docker/QUICKSTART-DOCKER.md - Quick start guide - docker/DOCKER-SOLUTION-SUMMARY.md - Architecture overview - BACKUP-TYPES-GUIDE.md - File vs block device backup guide Updated: - README.md - Added cross-platform support section and platform matrix - CHANGELOG.md - Documented all Docker features This enables PBSClientTool to backup Windows and Mac systems via Docker, while maintaining native Linux performance for full disk images. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
59 lines
1.5 KiB
Bash
Executable file
59 lines
1.5 KiB
Bash
Executable file
#!/bin/bash
|
|
# Build script for PBS Client Docker image
|
|
|
|
set -e
|
|
|
|
VERSION=${1:-latest}
|
|
IMAGE_NAME="pbsclient"
|
|
|
|
echo "=================================="
|
|
echo "Building PBS Client Docker Image"
|
|
echo "=================================="
|
|
echo "Version: $VERSION"
|
|
echo "Image: $IMAGE_NAME:$VERSION"
|
|
echo
|
|
|
|
# Check if scripts directory exists
|
|
if [ ! -d "scripts" ]; then
|
|
echo "ERROR: scripts/ directory not found"
|
|
echo "Make sure you're in the correct directory"
|
|
exit 1
|
|
fi
|
|
|
|
# Build the image
|
|
echo "Building image..."
|
|
docker build -t "$IMAGE_NAME:$VERSION" .
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo
|
|
echo "=================================="
|
|
echo "Build successful!"
|
|
echo "=================================="
|
|
echo
|
|
echo "Image: $IMAGE_NAME:$VERSION"
|
|
echo
|
|
echo "Quick test:"
|
|
echo " docker run --rm $IMAGE_NAME:$VERSION test"
|
|
echo
|
|
echo "Deploy with:"
|
|
echo " docker-compose -f docker-compose-linux.yml up -d"
|
|
echo " docker-compose -f docker-compose-windows.yml up -d"
|
|
echo " docker-compose -f docker-compose-macos.yml up -d"
|
|
echo
|
|
else
|
|
echo
|
|
echo "=================================="
|
|
echo "Build failed!"
|
|
echo "=================================="
|
|
exit 1
|
|
fi
|
|
|
|
# Optionally tag as latest
|
|
if [ "$VERSION" != "latest" ]; then
|
|
echo "Tagging as latest..."
|
|
docker tag "$IMAGE_NAME:$VERSION" "$IMAGE_NAME:latest"
|
|
fi
|
|
|
|
# Show image size
|
|
echo "Image size:"
|
|
docker images "$IMAGE_NAME:$VERSION" --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
|