mirror of
				https://github.com/cookiecutter/cookiecutter-django.git
				synced 2025-10-31 16:07:49 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| PostgreSQL Backups with Docker
 | |
| ==============================
 | |
| 
 | |
| .. note:: For brevity it is assumed that you will be running the below commands against local environment, however, this is by no means mandatory so feel free to switch to ``production.yml`` when needed.
 | |
| 
 | |
| 
 | |
| Prerequisites
 | |
| -------------
 | |
| 
 | |
| #. the project was generated with ``use_docker`` set to ``y``;
 | |
| #. the stack is up and running: ``docker-compose -f local.yml up -d postgres``.
 | |
| 
 | |
| 
 | |
| Creating a Backup
 | |
| -----------------
 | |
| 
 | |
| To create a backup, run::
 | |
| 
 | |
|     $ docker-compose -f local.yml exec postgres backup
 | |
| 
 | |
| Assuming your project's database is named ``my_project`` here is what you will see: ::
 | |
| 
 | |
|     Backing up the 'my_project' database...
 | |
|     SUCCESS: 'my_project' database backup 'backup_2018_03_13T09_05_07.sql.gz' has been created and placed in '/backups'.
 | |
| 
 | |
| Keep in mind that ``/backups`` is the ``postgres`` container directory.
 | |
| 
 | |
| 
 | |
| Viewing the Existing Backups
 | |
| ----------------------------
 | |
| 
 | |
| To list existing backups, ::
 | |
| 
 | |
|     $ docker-compose -f local.yml exec postgres backups
 | |
| 
 | |
| These are the sample contents of ``/backups``: ::
 | |
| 
 | |
|     These are the backups you have got:
 | |
|     total 24K
 | |
|     -rw-r--r-- 1 root root 5.2K Mar 13 09:05 backup_2018_03_13T09_05_07.sql.gz
 | |
|     -rw-r--r-- 1 root root 5.2K Mar 12 21:13 backup_2018_03_12T21_13_03.sql.gz
 | |
|     -rw-r--r-- 1 root root 5.2K Mar 12 21:12 backup_2018_03_12T21_12_58.sql.gz
 | |
| 
 | |
| 
 | |
| Copying Backups Locally
 | |
| -----------------------
 | |
| 
 | |
| If you want to copy backups from your ``postgres`` container locally, ``docker cp`` command_ will help you on that.
 | |
| 
 | |
| For example, given ``9c5c3f055843`` is the container ID copying all the backups over to a local directory is as simple as ::
 | |
| 
 | |
|     $ docker cp 9c5c3f055843:/backups ./backups
 | |
| 
 | |
| With a single backup file copied to ``.`` that would be ::
 | |
| 
 | |
|     $ docker cp 9c5c3f055843:/backups/backup_2018_03_13T09_05_07.sql.gz .
 | |
| 
 | |
| .. _`command`: https://docs.docker.com/engine/reference/commandline/cp/
 | |
| 
 | |
| 
 | |
| Restoring from the Existing Backup
 | |
| ----------------------------------
 | |
| 
 | |
| To restore from one of the backups you have already got (take the ``backup_2018_03_13T09_05_07.sql.gz`` for example), ::
 | |
| 
 | |
|     $ docker-compose -f local.yml exec postgres restore backup_2018_03_13T09_05_07.sql.gz
 | |
| 
 | |
| You will see something like ::
 | |
| 
 | |
|     Restoring the 'my_project' database from the '/backups/backup_2018_03_13T09_05_07.sql.gz' backup...
 | |
|     INFO: Dropping the database...
 | |
|     INFO: Creating a new database...
 | |
|     INFO: Applying the backup to the new database...
 | |
|     SET
 | |
|     SET
 | |
|     SET
 | |
|     SET
 | |
|     SET
 | |
|      set_config
 | |
|     ------------
 | |
| 
 | |
|     (1 row)
 | |
| 
 | |
|     SET
 | |
|     # ...
 | |
|     ALTER TABLE
 | |
|     SUCCESS: The 'my_project' database has been restored from the '/backups/backup_2018_03_13T09_05_07.sql.gz' backup.
 | |
| 
 | |
| 
 | |
| Backup to Amazon S3
 | |
| ----------------------------------
 | |
| For uploading your backups to Amazon S3 you can use the aws cli container. There is an upload command for uploading the postgres /backups directory recursively and there is a download command for downloading a specific backup. The default S3 environment variables are used. ::
 | |
| 
 | |
|     $ docker-compose -f production.yml run --rm awscli upload
 | |
|     $ docker-compose -f production.yml run --rm awscli download backup_2018_03_13T09_05_07.sql.gz
 |