Add entrypoint fallback for missing bind-mounted scripts
- scripts/entrypoint.sh (new): prefers the live bind-mounted backup-cron.sh, but falls back to a copy baked into the image at build time if the mount is missing. If neither exists, it stays up and idle (instead of crash-looping) so the container remains reachable via console/exec for diagnosis. - scripts/backup-cron.sh (updated): resolves db-backup.sh the same live-or-fallback way, re-checked on every loop iteration, so if the bind mount comes back healthy later, this container picks up the live scripts on its next backup run with no restart needed. - scripts/backup.Dockerfile (updated): bakes all three scripts into the image under /app/scripts-default/ as the fallback, and sets the new wrapper as ENTRYPOINT.
This commit is contained in:
@@ -1,5 +1,19 @@
|
||||
# Backup sidecar image: Postgres client tools (pg_dump/psql) + openssl for
|
||||
# at-rest encryption of dumps. The scripts themselves are bind-mounted at runtime
|
||||
# (see the `backup` service in docker-compose.yml), so they're not COPYed here.
|
||||
# at-rest encryption of dumps.
|
||||
#
|
||||
# The scripts are bind-mounted live at runtime (see the `backup` service in
|
||||
# docker-compose.yml) so they can be edited without a rebuild -- but they're
|
||||
# ALSO baked in here as a fallback default under /app/scripts-default/.
|
||||
# entrypoint.sh prefers the live mount and only falls back to this baked-in
|
||||
# copy if the mount is missing, empty, or stale. That fallback is what keeps
|
||||
# a broken bind mount from crash-looping the container into an unreachable
|
||||
# state (see entrypoint.sh for the full story).
|
||||
FROM postgres:16-alpine
|
||||
RUN apk add --no-cache openssl
|
||||
|
||||
COPY scripts/backup-cron.sh scripts/db-backup.sh scripts/db-restore.sh /app/scripts-default/
|
||||
COPY scripts/entrypoint.sh /app/entrypoint.sh
|
||||
RUN chmod +x /app/entrypoint.sh /app/scripts-default/*.sh
|
||||
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
CMD []
|
||||
|
||||
Reference in New Issue
Block a user