mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-01-24 00:04:13 +03:00
adds docker database controls
This commit is contained in:
parent
93c65590ee
commit
eb4092c159
11
{{cookiecutter.repo_name}}/compose/postgres/Dockerfile
Normal file
11
{{cookiecutter.repo_name}}/compose/postgres/Dockerfile
Normal file
|
@ -0,0 +1,11 @@
|
|||
FROM postgres:9.5
|
||||
|
||||
# add backup scripts
|
||||
ADD backup.sh /usr/local/bin/backup
|
||||
ADD restore.sh /usr/local/bin/restore
|
||||
ADD list-backups.sh /usr/local/bin/list-backups
|
||||
|
||||
# make them executable
|
||||
RUN chmod +x /usr/local/bin/restore
|
||||
RUN chmod +x /usr/local/bin/list-backups
|
||||
RUN chmod +x /usr/local/bin/backup
|
22
{{cookiecutter.repo_name}}/compose/postgres/backup.sh
Normal file
22
{{cookiecutter.repo_name}}/compose/postgres/backup.sh
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
# stop on errors
|
||||
set -e
|
||||
|
||||
# we might run into trouble when using the default `postgres` user, e.g. when dropping the postgres
|
||||
# database in restore.sh. Check that something else is used here
|
||||
if [ "$POSTGRES_USER" == "postgres" ]
|
||||
then
|
||||
echo "creating a backup as the postgres user is not supported, make sure to set the POSTGRES_USER environment variable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# export the postgres password so that subsequent commands don't ask for it
|
||||
export PGPASSWORD=$POSTGRES_PASSWORD
|
||||
|
||||
echo "creating backup"
|
||||
echo "---------------"
|
||||
|
||||
FILENAME=backup_$(date +'%Y_%m_%dT%H_%M_%S').sql
|
||||
pg_dump -h postgres -U $POSTGRES_USER >> /backups/$FILENAME
|
||||
|
||||
echo "successfully created backup $FILENAME"
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
echo "listing available backups"
|
||||
echo "-------------------------"
|
||||
ls /backups/
|
56
{{cookiecutter.repo_name}}/compose/postgres/restore.sh
Normal file
56
{{cookiecutter.repo_name}}/compose/postgres/restore.sh
Normal file
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash
|
||||
|
||||
# stop on errors
|
||||
set -e
|
||||
|
||||
# we might run into trouble when using the default `postgres` user, e.g. when dropping the postgres
|
||||
# database in restore.sh. Check that something else is used here
|
||||
if [ "$POSTGRES_USER" == "postgres" ]
|
||||
then
|
||||
echo "restoring as the postgres user is not supported, make sure to set the POSTGRES_USER environment variable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# export the postgres password so that subsequent commands don't ask for it
|
||||
export PGPASSWORD=$POSTGRES_PASSWORD
|
||||
|
||||
# check that we have an argument for a filename candidate
|
||||
if [[ $# -eq 0 ]] ; then
|
||||
echo 'usage:'
|
||||
echo ' docker-compose run postgres restore <backup-file>'
|
||||
echo ''
|
||||
echo 'to get a list of available backups, run:'
|
||||
echo ' docker-compose run postgres list-backups'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# set the backupfile variable
|
||||
BACKUPFILE=/backups/$1
|
||||
|
||||
# check that the file exists
|
||||
if ! [ -f $BACKUPFILE ]; then
|
||||
echo "backup file not found"
|
||||
echo 'to get a list of available backups, run:'
|
||||
echo ' docker-compose run postgres list-backups'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "beginning restore from $1"
|
||||
echo "-------------------------"
|
||||
|
||||
# delete the db
|
||||
# deleting the db can fail. Spit out a comment if this happens but continue since the db
|
||||
# is created in the next step
|
||||
echo "deleting old database $POSTGRES_USER"
|
||||
if dropdb -h postgres -U $POSTGRES_USER $POSTGRES_USER
|
||||
then echo "deleted $POSTGRES_USER database"
|
||||
else echo "database $POSTGRES_USER does not exist, continue"
|
||||
fi
|
||||
|
||||
# create a new database
|
||||
echo "creating new database $POSTGRES_USER"
|
||||
createdb -h postgres -U $POSTGRES_USER $POSTGRES_USER -O $POSTGRES_USER
|
||||
|
||||
# restore the database
|
||||
echo "restoring database $POSTGRES_USER"
|
||||
psql -h postgres -U $POSTGRES_USER < $BACKUPFILE
|
|
@ -1,11 +1,12 @@
|
|||
version: '2'
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:9.5
|
||||
build: ./compose/postgres
|
||||
volumes:
|
||||
# If you are using boot2docker, postgres data has to live in the VM for now until #581 is fixed
|
||||
# for more info see here: https://github.com/boot2docker/boot2docker/issues/581
|
||||
- /data/dev/{{cookiecutter.repo_name}}/postgres:/var/lib/postgresql/data
|
||||
- /data/dev/{{cookiecutter.repo_name}}/postgres-backups:/backups
|
||||
environment:
|
||||
- POSTGRES_USER={{cookiecutter.repo_name}}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ services:
|
|||
image: postgres:9.5
|
||||
volumes:
|
||||
- /data/{{cookiecutter.repo_name}}/postgres:/var/lib/postgresql/data
|
||||
- /data/{{cookiecutter.repo_name}}/postgres-backups:/backups
|
||||
env_file: .env
|
||||
|
||||
django:
|
||||
|
|
Loading…
Reference in New Issue
Block a user