# syntax=docker/dockerfile:1.7
#
# ALM Talent - backup / restore tool image. DRAFT for Stage 6 (prep/deploy).
# Small enough to build on the server itself:  deploy/bin/alm build backup
# Build context = the deploy/ folder (see docker-compose.yml, service "backup").
#
# Contents: PostgreSQL 18 client tools (same major version as the server, so pg_dump/pg_restore
# match), restic (encrypted, de-duplicated backups to R2 + B2), rclone (weekly media mirror
# R2 -> B2), curl (Healthchecks.io pings), jq.
# It never runs permanently: systemd timers start it with "docker compose run --rm backup <command>".

ARG POSTGRES_CLIENT_IMAGE=postgres:18-alpine
FROM ${POSTGRES_CLIENT_IMAGE}

RUN set -eux; \
    apk add --no-cache bash coreutils findutils curl jq restic rclone tzdata ca-certificates; \
    restic version; rclone version | head -n 1; pg_dump --version

COPY scripts/backup/ /opt/alm-backup/
RUN chmod 0755 /opt/alm-backup/*.sh

ENV TZ=UTC \
    RESTIC_CACHE_DIR=/var/cache/restic \
    ALM_BACKUP_STAGE=/var/tmp/alm-backup
WORKDIR /opt/alm-backup
ENTRYPOINT ["/opt/alm-backup/entrypoint.sh"]
CMD ["help"]
