Executando verificação de segurança...
2

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
Carregando publicação patrocinada...
2

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.

1

O primeiro artigo sempre me foi muito útil... Recomendo sempre que alguém precisa fazer um deploy padrão de Django.

Já o segundo me parece bem completo e recente, ainda não testei mas me parece bem promissor!!

Valeu!!