# 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](https://docs.docker.com/engine/security/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 ```