Updated to use postgres image.

This commit is contained in:
Pau Rodriguez-Estivill
2016-10-28 17:01:50 +02:00
parent a7e9ea29a4
commit cb81b30e9c
5 changed files with 44 additions and 60 deletions
+15 -8
View File
@@ -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
+29 -24
View File
@@ -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
-1
View File
@@ -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."
-18
View File
@@ -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/*
-9
View File
@@ -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