From cb81b30e9c7141b674b7b0434230fa182ad4fb00 Mon Sep 17 00:00:00 2001 From: Pau Rodriguez-Estivill Date: Fri, 28 Oct 2016 17:01:50 +0200 Subject: [PATCH] Updated to use postgres image. --- Dockerfile | 23 +++++++++++++++-------- README.md | 53 +++++++++++++++++++++++++++++------------------------ backup.sh | 1 - install.sh | 18 ------------------ run.sh | 9 --------- 5 files changed, 44 insertions(+), 60 deletions(-) delete mode 100755 install.sh delete mode 100755 run.sh diff --git a/Dockerfile b/Dockerfile index 3f8c103..c58e384 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,10 @@ -FROM alpine:3.4 -MAINTAINER Pau Rodriguez-Estivill "prodrigestivill@gmail.com" +FROM postgres -ADD install.sh install.sh -RUN sh install.sh && rm install.sh +RUN 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/odise/go-cron/releases/download/v0.0.7/go-cron-linux.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 ENV POSTGRES_DB **None** ENV POSTGRES_HOST **None** @@ -10,13 +12,18 @@ ENV POSTGRES_PORT 5432 ENV POSTGRES_USER **None** ENV POSTGRES_PASSWORD **None** ENV POSTGRES_EXTRA_OPTS '-Z9' -ENV SCHEDULE **None** +ENV SCHEDULE '@daily' ENV BACKUP_DIR '/backups' ENV BACKUP_KEEP_DAYS 7 ENV BACKUP_KEEP_WEEKS 4 ENV BACKUP_KEEP_MONTHS 6 -ADD run.sh run.sh -ADD backup.sh backup.sh +COPY backup.sh /backup.sh -CMD ["sh", "run.sh"] +VOLUME /backups + +ENTRYPOINT ["/bin/sh", "-c"] +CMD ["exec /usr/local/bin/go-cron -s \"$SCHEDULE\" -p 80 -- /backup.sh"] + +HEALTHCHECK --interval=5m --timeout=3s \ + CMD curl -f http://localhost/ || exit 1 diff --git a/README.md b/README.md index e29aacc..1fa28c2 100644 --- a/README.md +++ b/README.md @@ -7,34 +7,39 @@ Based on [schickling/postgres-backup-s3](https://hub.docker.com/r/schickling/pos Docker: ```sh -$ docker run -e BACKUP_DIR=/backups -e POSTGRES_DATABASE=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_HOST=localhost schickling/postgres-backup-local +$ docker run -e POSTGRES_HOST=postgres -e POSTGRES_DB=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password prodrigestivill/postgres-backup-local /backup.sh ``` Docker Compose: ```yaml -postgres: - image: postgres - environment: - POSTGRES_DB: dbname - POSTGRES_USER: user - POSTGRES_PASSWORD: password - -pgbackups: - image: prodrigestivill/postgres-backup-local - links: - - postgres - volumes: - - /var/opt/pgbackups:/backups - environment: - SCHEDULE: '@daily' - BACKUP_DIR: /backups - BACKUP_KEEP_DAYS: 7 - BACKUP_KEEP_WEEKS: 4 - BACKUP_KEEP_MONTHS: 6 - POSTGRES_DB: dbname - POSTGRES_USER: user - POSTGRES_PASSWORD: password - POSTGRES_EXTRA_OPTS: '-Z9 --schema=public --blobs' +version: '2' +services: + postgres: + image: postgres + restart: always + environment: + - POSTGRES_DB=database + - POSTGRES_USER=username + - POSTGRES_PASSWORD=password + pgbackups: + image: prodrigestivill/postgres-backup-local + restart: always + volumes: + - /var/opt/pgbackups:/backups + links: + - postgres + depends_on: + - postgres + environment: + - POSTGRES_HOST=postgres + - POSTGRES_DB=database + - POSTGRES_USER=username + - POSTGRES_PASSWORD=password + - POSTGRES_EXTRA_OPTS=-Z9 --schema=public --blobs + - SCHEDULE=@daily + - BACKUP_KEEP_DAYS=7 + - BACKUP_KEEP_WEEKS=4 + - BACKUP_KEEP_MONTHS=6 ``` ### Automatic Periodic Backups diff --git a/backup.sh b/backup.sh index e38ca02..3d5d96f 100755 --- a/backup.sh +++ b/backup.sh @@ -1,7 +1,6 @@ #! /bin/sh set -e -set -o pipefail if [ "${POSTGRES_DB}" = "**None**" ]; then echo "You need to set the POSTGRES_DB environment variable." diff --git a/install.sh b/install.sh deleted file mode 100755 index 1578546..0000000 --- a/install.sh +++ /dev/null @@ -1,18 +0,0 @@ -#! /bin/sh - -# exit if a command fails -set -e - -apk update - -# install pg_dump -apk add postgresql - -# install go-cron -apk add curl -curl -L https://github.com/odise/go-cron/releases/download/v0.0.6/go-cron-linux.gz | zcat > /usr/local/bin/go-cron -chmod u+x /usr/local/bin/go-cron -apk del curl - -# cleanup -rm -rf /var/cache/apk/* diff --git a/run.sh b/run.sh deleted file mode 100755 index 05dfcaa..0000000 --- a/run.sh +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/sh - -set -e - -if [ "${SCHEDULE}" = "**None**" ]; then - sh backup.sh -else - exec go-cron "$SCHEDULE" /bin/sh backup.sh -fi