It is needed for persistency of the DB data. Otherwise Postgres container deletion will erase all data
Create docker volume with name 'pgdata'
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni$ sudo docker volume create pgdata
pgdata
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni$ sudo docker volume inspect pgdata
[
{
"CreatedAt": "2020-05-25T08:22:50Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/pgdata/_data",
"Name": "pgdata",
"Options": {},
"Scope": "local"
}
]
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni$
Refer: https://docs.docker.com/compose/compose-file/
Refer here for the docker compose
Refer here and here for migration of DB
Refer here for creating superuser
Refer here for WSGI config related to Gunicorn
Refer here and here for static file config related to Gunicorn
Refer here for exposing Django via Nginx HTTP
Refer here for Nginx.conf update for https redirect in Nginx
Refer here for nginx server certificate configuration
Refer here
migration of volume data
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker volume inspect djangoalumni_alumni-web-pgda
ta
[
{
"CreatedAt": "2020-05-25T22:06:33Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "djangoalumni",
"com.docker.compose.volume": "alumni-web-pgdata"
},
"Mountpoint": "/var/lib/docker/volumes/djangoalumni_alumni-web-pgdata/_data",
"Name": "djangoalumni_alumni-web-pgdata",
"Options": null,
"Scope": "local"
}
]
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo /var/lib/docker/volumes/djangoalumni_alumni-web-pgdata/_data^C
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo ls /var/lib/docker/volumes/djangoalumni_alumni-web-pgdata/_data
PG_VERSION pg_commit_ts pg_ident.conf pg_notify pg_snapshots pg_subtrans pg_wal postgresql.conf
base pg_dynshmem pg_logical pg_replslot pg_stat pg_tblspc pg_xact postmaster.opts
global pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase postgresql.auto.conf postmaster.pid
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker volume create test
test
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker volume inspect test
[
{
"CreatedAt": "2020-05-25T23:17:13Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/test/_data",
"Name": "test",
"Options": {},
"Scope": "local"
}
]
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo ls -l /var/lib/docker/volumes/test/_data
total 0
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker run -v djangoalumni_alumni-web-pgdata:/volumedata --name dbstore ubuntu /bin/bash
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ ls
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /volumedata
/volumedata/
/volumedata/pg_multixact/
/volumedata/pg_multixact/members/
/volumedata/pg_multixact/members/0000
/volumedata/pg_multixact/offsets/
/volumedata/pg_multixact/offsets/0000
/volumedata/postmaster.pid
/volumedata/pg_stat_tmp/
/volumedata/pg_stat_tmp/db_13408.stat
/volumedata/pg_stat_tmp/db_0.stat
/volumedata/pg_stat_tmp/global.stat
/volumedata/pg_serial/
...
...
/volumedata/base/13407/4161
/volumedata/base/13407/4164
/volumedata/base/13407/13268_vm
/volumedata/base/13407/826
/volumedata/base/13407/2666
/volumedata/base/13407/3257
/volumedata/base/13407/3394_vm
/volumedata/PG_VERSION
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ ls
backup.tar
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ #Restore
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker run -v test:/dbdata --name dbstore2 ubuntu /bin/bash
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"
volumedata/pg_multixact/
volumedata/pg_multixact/members/
volumedata/pg_multixact/members/0000
volumedata/pg_multixact/offsets/
volumedata/pg_multixact/offsets/0000
volumedata/postmaster.pid
...
...
volumedata/base/13407/826
volumedata/base/13407/2666
volumedata/base/13407/3257
volumedata/base/13407/3394_vm
volumedata/PG_VERSION
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo docker volume inspect test
[
{
"CreatedAt": "2020-05-25T23:27:32Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/test/_data",
"Name": "test",
"Options": {},
"Scope": "local"
}
]
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$ sudo ls -l /var/lib/docker/volumes/test/_data
total 124
-rw------- 1 999 docker 3 May 26 03:36 PG_VERSION
drwx------ 5 999 docker 4096 May 26 03:36 base
drwx------ 2 999 docker 4096 May 26 03:38 global
drwx------ 2 999 docker 4096 May 26 03:36 pg_commit_ts
drwx------ 2 999 docker 4096 May 26 03:36 pg_dynshmem
-rw------- 1 999 docker 4535 May 26 03:36 pg_hba.conf
-rw------- 1 999 docker 1636 May 26 03:36 pg_ident.conf
drwx------ 4 999 docker 4096 May 26 04:06 pg_logical
drwx------ 4 999 docker 4096 May 26 03:36 pg_multixact
drwx------ 2 999 docker 4096 May 26 03:36 pg_notify
drwx------ 2 999 docker 4096 May 26 03:36 pg_replslot
drwx------ 2 999 docker 4096 May 26 03:36 pg_serial
drwx------ 2 999 docker 4096 May 26 03:36 pg_snapshots
drwx------ 2 999 docker 4096 May 26 03:36 pg_stat
drwx------ 2 999 docker 4096 May 26 04:52 pg_stat_tmp
drwx------ 2 999 docker 4096 May 26 03:36 pg_subtrans
drwx------ 2 999 docker 4096 May 26 03:36 pg_tblspc
drwx------ 2 999 docker 4096 May 26 03:36 pg_twophase
drwx------ 3 999 docker 4096 May 26 03:36 pg_wal
drwx------ 2 999 docker 4096 May 26 03:36 pg_xact
-rw------- 1 999 docker 88 May 26 03:36 postgresql.auto.conf
-rw------- 1 999 docker 26588 May 26 03:36 postgresql.conf
-rw------- 1 999 docker 36 May 26 03:36 postmaster.opts
-rw------- 1 999 docker 94 May 26 03:36 postmaster.pid
(base) appadmin@ranchimall4:~/predeploy/alumni-website/django-alumni/temp$
Refer here
Below is the sample output
Command within container to view admin accounts
root@1113aa20f11d:/twittertools# python manage.py shell
Python 3.8.3 (default, May 16 2020, 07:08:28)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.auth import get_user_model
>>> list(get_user_model().objects.filter(is_superuser=True).values_list('username', flat=True))
['admin']
>>>
>>>
Ref: https://djangowaves.com/tips-tricks/how-to-reset-the-django-admin-password/
https://stackoverflow.com/questions/33992867/how-do-you-perform-django-database-migrations-when-using-docker-compose
https://docs.docker.com/compose/django/
https://www.youtube.com/watch?v=jN9iPaQzZbQ