DUVIDA - Onde encontrar um guia para deploy de uma aplicação Django usando o composer?
Estou desenvolvendo um app em Django e tentando seguir as boas práticas, deixando-o mais simples de testar e dar futuras manutenções. Isso inclui dockerizar os serviços, como o próprio web-app e o banco de dados (para esse projeto escolhi o Postgres).
Até aí tudo bem... Porém, sempre tive dificuldade em encontrar algum conteúdo, seja vídeo, artigo, passo a passo, etc., que consiga exemplificar um deploy para produção de uma aplicação neste sentido. Todas que encontrei são um simples 'runserver 0.0.0.0:8000' e dizem que é isso.
Alguém pode me ajudar?
Hoje meu composer está assim:
version: "3.8"
services:
db_postgres:
image: postgres:16
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
web:
build: .
command: ["sh", "./start.sh"]
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db_postgres
volumes:
postgres_data:
Meu Dockerfile:
FROM python:3.11.4-slim-bullseye
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
WORKDIR /app
COPY . /app/
RUN apt-get update
COPY ./requirements.txt .
RUN pip install -r requirements.txt
E meu start.sh
#!/bin/bash
python manage.py makemigrations --no-input
python manage.py migrate --no-input
python manage.py collectstatic --no-input
python manage.py shell < core/createsuperuser.py
python manage.py runserver 0.0.0.0:8000
Esse artigo da Digital Ocean pode ter dar uma boa noção. No entanto ele não está usando containers, Mas no geral ao invés de usar o runserver você usa o gunicorn. é na parte do nginx é só apontar para o container/porta.
no final achei esse artigo que dá um exemplo com tudo rodando full docker.
Eu geralmente uso tudo igual ao segundo artigo, com exceção ao Nginx que eu prefiro que rode diretamente na VM.