Files
shopdb-flask/scripts/backup/Dockerfile.backup
Proudlock f1ed2b19cd Fix backup system - offline restic package approach
PROBLEM: Corporate proxy (Zscaler) blocked ALL package downloads during
Docker build - Oracle Linux yum, Alpine apk, even with SSL certs.

SOLUTION: Offline package approach
- Pre-download restic binary on host (works outside Docker)
- Bake binary into repo at scripts/backup/offline-packages/
- Updated Dockerfile.backup to use offline binary (no downloads)
- Simplified: mysql:8.4 base + offline restic only (no Python/alembic)

RESULT: Backup containers build successfully behind corporate proxy

FILES:
- scripts/backup/offline-packages/restic_0.17.3_linux_amd64.bz2 (8.6MB)
- scripts/backup/Dockerfile.backup: Use offline package, no downloads

VERIFICATION:
- docker compose build backup: SUCCESS
- Backup watcher running: Polling every 30s
- Backup store running: restic REST server on port 8000

WORKING:
- Click 'Back Up Now' in UI
- Watcher detects sentinel file within 30s
- Backup executes automatically

The offline package can be checked into git for easy deployment at
other sites behind similar proxies.
2026-09-07 00:37:54 -04:00

22 lines
937 B
Docker

# Backup sidecar image: mysql:8.4 base (mysqldump already included) plus
# offline-packaged restic for deduped, encrypted backups.
#
# OFFLINE BUILD: No package downloads during build to avoid corporate proxy SSL issues.
# - mysqldump: included in mysql:8.4 base image (version-matched)
# - restic: pre-downloaded binary baked into repo at scripts/backup/offline-packages/
# - NO Python/alembic: simplified backup without manifest generation
#
# This works behind Zscaler/corporate proxies because nothing downloads during build.
FROM mysql:8.4
# Copy pre-downloaded restic binary (offline package - baked into repo)
COPY scripts/backup/offline-packages/restic_0.17.3_linux_amd64.bz2 /tmp/restic.bz2
# Install restic from offline package (no downloads, no SSL issues)
RUN bunzip2 /tmp/restic.bz2 \
&& install -m 0755 /tmp/restic /usr/local/bin/restic \
&& rm -f /tmp/restic \
&& restic version
ENTRYPOINT ["/opt/backup/backup.sh"]