This is the part 2 of a serie of posts on how to structure a Dango project. This is the link to part 1.
The source code from this part
Introduction
Ok, we have our Django project running on docker, let's now configure the Postgres. Dispite the fact that we can use sqlite in production, we are going to use the Postgres.
Update compose.yaml
We are going to add a new service for postgres and configure as a dependence to our web service.
services:
# The service to be created on docker
web:
...
# Only start this image after postgres
depends_on:
- postgres
postgres:
# The postgres image from docker hub
image: postgres:16.2
container_name: palindrome_postgres
# The volume that will be used by this image
volumes:
- palindrome_postgres_data:/var/lib/postgresql/data
# Open the port in localhost:5432 for external access
ports:
- "5432:5432"
# db NAME, USER and HOST are by default 'postgres', just configure the password here
environment:
POSTGRES_PASSWORD: postgres
volumes:
# Volume used by the postgres container
palindrome_postgres_data: { }
Update .env file
...
# DB_PASSWORD is configured on compose.yaml, the others is the image default
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=postgres
DB_PORT=5432
Update the .env.template for first setup refenrece
Add the template on git
...
DB_NAME=
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=
Add psycopg on Poetry
Add psycopg, a python adapter to postgres, so we can talk to the database.
$ poetry add psycopg[binary]
Update settings.py
Configure settings.py for using postgres and remove the sqlite.
DATABASES = {
# Remove the sqlite configuration
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
# Add the postgres configuration
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': env('DB_NAME'),
'USER': env('DB_USER'),
'PASSWORD': env('DB_PASSWORD'),
'HOST': env('DB_HOST'),
'PORT': env('DB_PORT'),
}
}
Update README.md
Yes, this is part of the job. Just add the psycopg
# Palindrome project
Project used to explain my view on a django project architecture, explained on my [series of posts](https://dev.to/pcampos119104/django-project-setup-part-1-2e7a)
## Tools, libs, etc. Some time related files.
Versions on Poetry.
- [Python](https://www.python.org/) Programming languange
- [django-environ](https://django-environ.readthedocs.io) Manage .envs in Django
- [Poetry](https://python-poetry.org/) Python packaging and dependency management
- poetry.lock
- pyproject.toml
- [Django](https://www.djangoproject.com/) Web framework written in Python
- [Docker](https://www.docker.com/) Manage containers for dev environment
- compose.yaml
- compose/dev/Dockerfile
- compose/dev/start
- .env
- [Just](https://just.systems/) encapsulate commands for easier use
- justfile
- [psycopg](https://www.psycopg.org/) Python adapter for Postgres # <-- new line
## Dev environment setup
1. Install Just, Docker and Poetry(opcional).
2. Copie .env.example to .env, no need for edtion.
3. `$ just build`
## Run the server for development
1. Certified that docker is up and running
2. `$ just runserver`
You can access on http://0.0.0.0:8000/
Rebuild an run the project
$ just build
$ just runserver
You should be able to create a superuser normally now. Just run just mng createsuperuser
Top comments (0)