taal-academie.arree.bzh
Project structure :
.
├── django
│ ├── Dockerfile
│ ├── requirements.txt
│ └── src
│ ├── config
│ ├── development.env
│ ├── home
│ ├── local.env
│ ├── manage.py
│ ├── pages
│ ├── production.env
│ └── workshops
├── compose.dev.yml
├── compose.local.yml
├── compose.prod.yml
├── compose.yml
├── nginx
│ ├── default.conf
│ └── Dockerfile
└── README.md
Deployment with Nerdctl Compose
Can be used as well in Nerdctl root or rootless mode.
There are three profiles :
- Development : with only the database
- Local : for local testing of the production stack
- Production : Final deployment on the server
Development
To run the development profile from the project django/src
directory :
$ ( cd ../.. && nerdctl compose -f compose.yml -f compose.dev.yml up -d postgres )
Then when calling the manage.py
script we need to pass DJANGO_ENV
to load src/dev.env
, like in the
following example to start the Django development server :
$ DJANGO_ENV=dev python manage.py runserver
To not have to pass this for each manage.py
execution you may export DJANGO_ENV
from your .bashrc
:
$ echo -e "\n# Django development\nexport DJANGO_ENV=dev" >> ~/.bashrc
Need to restart the session !
Local
To run the local profile from the project django/src
directory :
$ ( cd ../.. && nerdctl compose -f compose.yml -f compose.local.yml up -d )
Production
To run the production profile from the directory where the compose.yml
file lives :
$ nerdctl compose -f compose.yml -f compose.prod.yml up -d
At the first launch, it is advised to run the Deployment checklist from manage.py
to check if there are some security
improvements :
$ nerdctl exec -it django_taal-academiearreebzh python /django/manage.py check --deploy
Then create an admin user for the Django admin panel :
$ nerdctl exec -it django_taal-academiearreebzh python /django/manage.py createsuperuser