|Mark Veidemanis 906f34f3a2||4 months ago|
|app||6 months ago|
|core||4 months ago|
|docker||8 months ago|
|.gitignore||6 months ago|
|.pre-commit-config.yaml||4 months ago|
|Dockerfile||8 months ago|
|Makefile||7 months ago|
|README.md||8 months ago|
|docker-compose.yml||8 months ago|
|manage.py||8 months ago|
|requirements.txt||8 months ago|
Template Django app.
Setting up the environment
Create the virtual environment, enable it, and install the dependencies.
$ python3 -m venv env $ source env/bin/activate (env) $ pip install -r docker/prod/requirements.prod.txt
You'll need to copy the
app/local_settings.example.py file to
app/local_settings.py. The project won't start otherwise.
$ cp app/local_settings.example.py app/local_settings.py
The stack.env file referenced is a Portainer special. This is where Portainer would put a file containing all the environment variables set up in its UI.
To run it manually, you will need to copy
stack.env in the project root.
Running database migrations
Now we need to run the database migrations in order to get a working database.
(env) $ python manage.py migrate
Note that these are automatically run by a step in the compose file in production. You won't need to do that manually.
Creating a superuser
In order to access Django admin, we need a superuser.
(env) $ python manage.py createsuperuser Username: t2 Email address: firstname.lastname@example.org Password: Password (again): Superuser created successfully.
The Docker Compose file is located in
There is a shortcut to run it:
To stop the containers, run
This setup may be different from what you've seen before.
There is a Uvicorn worker in the
app container listening on
/var/run/socks/app.sock. This is the bit that runs the actual code.
Nginx runs in the
nginx container and proxies requests to Uvicorn thanks to a mounted and shared directory. No TCP required.
There's a few commands running before start to ensure Django works correctly.
migration container step runs the migrations so you don't need to remember to do it.
collectstatic container step collects all static files from plugins and puts them in the
core/static folder. This folder is served straight from Nginx without going through Uvicorn.