Block a user
postgres-backup-local (latest)
Published 2023-01-02 22:41:31 +01:00 by tord
Installation
docker pull git.annekarr.se/tord/postgres-backup-local:latestsha256:5c5ada805df348fc54a30c5bc0f6816f851ad195835a11300560cef463a257c4Image Layers
| ADD file:e5a364615e0f6961626089c7d658adbf8c8d95b3ae95a390a8bb33875317d434 in / |
| CMD ["bash"] |
| /bin/sh -c set -ex; if ! command -v gpg > /dev/null; then apt-get update; apt-get install -y --no-install-recommends gnupg dirmngr ; rm -rf /var/lib/apt/lists/*; fi |
| /bin/sh -c set -eux; groupadd -r postgres --gid=999; useradd -r -g postgres --uid=999 --home-dir=/var/lib/postgresql --shell=/bin/bash postgres; mkdir -p /var/lib/postgresql; chown -R postgres:postgres /var/lib/postgresql |
| ENV GOSU_VERSION=1.11 |
| /bin/sh -c set -x && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" && export GNUPGHOME="$(mktemp -d)" && gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && { command -v gpgconf > /dev/null && gpgconf --kill all || :; } && rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc && chmod +x /usr/local/bin/gosu && gosu nobody true && apt-get purge -y --auto-remove ca-certificates wget |
| /bin/sh -c set -eux; if [ -f /etc/dpkg/dpkg.cfg.d/docker ]; then grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; sed -ri '/\/usr\/share\/locale/d' /etc/dpkg/dpkg.cfg.d/docker; ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; fi; apt-get update; apt-get install -y locales; rm -rf /var/lib/apt/lists/*; localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 |
| ENV LANG=en_US.utf8 |
| /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends libnss-wrapper xz-utils ; rm -rf /var/lib/apt/lists/* |
| /bin/sh -c mkdir /docker-entrypoint-initdb.d |
| /bin/sh -c set -ex; key='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8'; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/postgres.gpg; command -v gpgconf > /dev/null && gpgconf --kill all; rm -rf "$GNUPGHOME"; apt-key list |
| ENV PG_MAJOR=12 |
| ENV PG_VERSION=12.2-2.pgdg100+1 |
| /bin/sh -c set -ex; export PYTHONDONTWRITEBYTECODE=1; dpkgArch="$(dpkg --print-architecture)"; case "$dpkgArch" in amd64|i386|ppc64el) echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; apt-get update; ;; *) echo "deb-src http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main $PG_MAJOR" > /etc/apt/sources.list.d/pgdg.list; case "$PG_MAJOR" in 9.* | 10 ) ;; *) echo 'deb http://deb.debian.org/debian buster-backports main' >> /etc/apt/sources.list.d/pgdg.list; ;; esac; tempDir="$(mktemp -d)"; cd "$tempDir"; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get build-dep -y postgresql-common pgdg-keyring "postgresql-$PG_MAJOR=$PG_VERSION" ; DEB_BUILD_OPTIONS="nocheck parallel=$(nproc)" apt-get source --compile postgresql-common pgdg-keyring "postgresql-$PG_MAJOR=$PG_VERSION" ; apt-mark showmanual | xargs apt-mark auto > /dev/null; apt-mark manual $savedAptMark; ls -lAFh; dpkg-scanpackages . > Packages; grep '^Package: ' Packages; echo "deb [ trusted=yes ] file://$tempDir ./" > /etc/apt/sources.list.d/temp.list; apt-get -o Acquire::GzipIndexes=false update; ;; esac; apt-get install -y postgresql-common; sed -ri 's/#(create_main_cluster) .*$/\1 = false/' /etc/postgresql-common/createcluster.conf; apt-get install -y "postgresql-$PG_MAJOR=$PG_VERSION" ; rm -rf /var/lib/apt/lists/*; if [ -n "$tempDir" ]; then apt-get purge -y --auto-remove; rm -rf "$tempDir" /etc/apt/sources.list.d/temp.list; fi; find /usr -name '*.pyc' -type f -exec bash -c 'for pyc; do dpkg -S "$pyc" &> /dev/null || rm -vf "$pyc"; done' -- '{}' + |
| /bin/sh -c set -eux; dpkg-divert --add --rename --divert "/usr/share/postgresql/postgresql.conf.sample.dpkg" "/usr/share/postgresql/$PG_MAJOR/postgresql.conf.sample"; cp -v /usr/share/postgresql/postgresql.conf.sample.dpkg /usr/share/postgresql/postgresql.conf.sample; ln -sv ../postgresql.conf.sample "/usr/share/postgresql/$PG_MAJOR/"; sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = '*'!" /usr/share/postgresql/postgresql.conf.sample; grep -F "listen_addresses = '*'" /usr/share/postgresql/postgresql.conf.sample |
| /bin/sh -c mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql |
| ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/12/bin |
| ENV PGDATA=/var/lib/postgresql/data |
| /bin/sh -c mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA" |
| VOLUME [/var/lib/postgresql/data] |
| COPY file:821a1b9a8b299450cd7a5c04287e0c367156e603da6c1f7f85bf7829bcf589b8 in /usr/local/bin/ |
| /bin/sh -c ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat |
| ENTRYPOINT ["docker-entrypoint.sh"] |
| EXPOSE 5432 |
| CMD ["postgres"] |
| ARG GOCRONVER=v0.0.8 |
| ARG TARGETOS |
| ARG TARGETARCH |
| RUN |3 GOCRONVER=v0.0.9 TARGETOS=linux TARGETARCH=amd64 /bin/sh -c set -x && apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && rm -rf /var/lib/apt/lists/* && curl -L https://github.com/prodrigestivill/go-cron/releases/download/$GOCRONVER/go-cron-$TARGETOS-$TARGETARCH.gz | zcat > /usr/local/bin/go-cron && chmod a+x /usr/local/bin/go-cron && apt-get purge -y --auto-remove ca-certificates && apt-get clean # buildkit |
| ENV POSTGRES_DB=**None** POSTGRES_DB_FILE=**None** POSTGRES_HOST=**None** POSTGRES_PORT=5432 POSTGRES_USER=**None** POSTGRES_USER_FILE=**None** POSTGRES_PASSWORD=**None** POSTGRES_PASSWORD_FILE=**None** POSTGRES_EXTRA_OPTS=-Z9 SCHEDULE=@daily BACKUP_DIR=/backups BACKUP_KEEP_DAYS=7 BACKUP_KEEP_WEEKS=4 BACKUP_KEEP_MONTHS=6 HEALTHCHECK_PORT=8080 |
| COPY backup.sh /backup.sh # buildkit |
| VOLUME [/backups] |
| ENTRYPOINT ["/bin/sh" "-c"] |
| CMD ["exec /usr/local/bin/go-cron -s \"$SCHEDULE\" -p \"$HEALTHCHECK_PORT\" -- /backup.sh"] |
| HEALTHCHECK &{["CMD-SHELL" "curl -f \"http://localhost:$HEALTHCHECK_PORT/\" || exit 1"] "5m0s" "3s" "0s" '\x00'} |