diff --git a/postgres-restore-s3/Dockerfile b/postgres-restore-s3/Dockerfile index b6e0c4b..ca0e2ca 100644 --- a/postgres-restore-s3/Dockerfile +++ b/postgres-restore-s3/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:edge +FROM alpine:3.2 MAINTAINER Johannes Schickling "schickling.j@gmail.com" ADD install.sh install.sh diff --git a/postgres-restore-s3/README.md b/postgres-restore-s3/README.md index ce0de9f..98b0644 100644 --- a/postgres-restore-s3/README.md +++ b/postgres-restore-s3/README.md @@ -1,41 +1,27 @@ -# postgres-backup-s3 +# postgres-restore-s3 -Backup PostgresSQL to S3 (supports periodic backups) +Restore a SQL backup from S3 to PostgresSQL + +## Warning + +This will potentially put your database in a very bad state or complete destroy your data, be very careful. + +## Limitations + +This is made to restore a backup made from postgres-backup-s3, if you backup came from somewhere else please check your format. + +* Your s3 bucket *must* only contain backups which you wish to restore - it will always grabs the 'latest' based on unix sort with no filtering +* They must be gzip encoded text sql files +* If your bucket has more than a 1000 files the latest may not be restore, only one s3 ls command is made ## Usage Docker: ```sh -$ docker run -e S3_ACCESS_KEY_ID=key -e S3_SECRET_ACCESS_KEY=secret -e S3_BUCKET=my-bucket -e S3_PREFIX=backup -e POSTGRES_DATABASE=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_HOST=localhost schickling/postgres-backup-s3 -``` - -Docker Compose: -```yaml -postgres: - image: postgres - environment: - POSTGRES_USER: user - POSTGRES_PASSWORD: password - -pgbackups3: - image: schickling/postgres-backup-s3 - links: - - postgres - environment: - SCHEDULE: '@daily' - S3_REGION: region - S3_ACCESS_KEY_ID: key - S3_SECRET_ACCESS_KEY: secret - S3_BUCKET: my-bucket - S3_PREFIX: backup - POSTGRES_DATABASE: dbname - POSTGRES_USER: user - POSTGRES_PASSWORD: password +$ docker run -e S3_ACCESS_KEY_ID=key -e S3_SECRET_ACCESS_KEY=secret -e S3_BUCKET=my-bucket -e S3_PREFIX=backup -e POSTGRES_DATABASE=dbname -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_HOST=localhost schickling/postgres-restore-s3 ``` -### Automatic Periodic Backups - -You can additionally set the `SCHEDULE` environment variable like `-e SCHEDULE="@daily"` to run the backup automatically. +## Dropping public -More information about the scheduling can be found [here](http://godoc.org/github.com/robfig/cron#hdr-Predefined_schedules). +If you wish to drop the public schema (drop schema public cascade; create schema public) then set the environment variable DROP_PUBLIC=yes. This is useful for situations where you wish to restore a database which currently has data / schemas in it. diff --git a/postgres-restore-s3/install.sh b/postgres-restore-s3/install.sh index aa2dfe5..be00ab0 100644 --- a/postgres-restore-s3/install.sh +++ b/postgres-restore-s3/install.sh @@ -6,7 +6,7 @@ set -e apk update # install pg_dump -apk add 'postgresql>9.5.0' +apk add postgresql # install s3 tools apk add python py-pip