Backing Up Our Database
One of the final tasks we need to address is how to back up a postgres database running inside a docker container.
Not that difficult:
docker exec postgres pg_dump -U user_todo db_todo > db_backups/backup.sql
After running the command above if you check the contents of your server/db_backups directory you should see a backup.sql file containing all your data.
Our Makefile that we created in Part 1 of this tutorial we will now populate with common Docker shortcut commands that come in handy.
# server/Makefile build: docker-compose build reboot: docker-compose down && docker-compose up -d prod: docker-compose up -d dev: docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d up-non-daemon: docker-compose up start: docker-compose start stop: docker-compose stop down: docker-compose down restart: docker-compose stop && docker-compose start restart-dev: docker-compose down && docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d restart-frontend: docker-compose stop frontend && docker-compose start frontend restart-server: docker-compose stop server && docker-compose start server shell-server: docker exec -ti server bash shell-frontend: docker exec -ti frontend bash shell-db: docker exec -ti postgres bash log-server: docker-compose logs server log-frontend: docker-compose logs frontend log-db: docker-compose logs postgres collectstatic: docker exec server /bin/sh -c "python manage.py collectstatic --noinput" migrations: docker exec server /bin/sh -c "python manage.py makemigrations; python manage.py migrate"
So now, when we want to reboot instead of having to run:
docker-compose down
docker-compose up -d
… we can simply run:
make reboot
… or running migrations:
make migrations
… instead of what we have been doing throughout this tutorial:
docker-compose run server ./manage.py makemigrations
docker-compose run server ./manage.py migrate
You will have to have Make installed on your development computer. I’m using a Mac so for me I only to run:
brew install make
Windows is something else, I’ll leave that to you reader to figure that out.