Django
Faça deploy do Django com Postgres, workers Celery ou RQ, collectstatic e migrations.
Passo a passo: Fazer deploy de Django no DigitalOcean · Fazer deploy de Django no Hetzner · Fazer deploy de Django no Vultr · Fazer deploy de Django no OVHcloud · Fazer deploy de Django no Scaleway · Fazer deploy de Django no UpCloud
- Detectado a partir de
requirements.txt,pyproject.tomlou de ummanage.pyque importa o Django. - Release:
python manage.py migrate --no-input. - Web: gunicorn na
$PORT— defina seu módulo WSGI no comando de start se ele não forwsgi:application. - Workers: Celery (
celery -A <project> worker, com o projeto lido deDJANGO_SETTINGS_MODULE), Celery Beat, RQ, Huey, Dramatiq e Django-Q são oferecidos quando aparecem como dependências. - Banco de dados:
psycopg→ Postgres, comDATABASE_URLinjetado.
Processos: um codebase, vários papéis
web, worker e um processo agendado beat são a mesma imagem iniciada com um comando diferente — o modelo de processos do 12-factor, e não aplicações separadas para manter sincronizadas entre si. Declare você mesmo em um Procfile:
web: gunicorn myproject.wsgi:application --bind 0.0.0.0:$PORT
worker: celery -A myproject worker --loglevel=info
beat: celery -A myproject beat --loglevel=info
ou pule o Procfile e deixe a detecção oferecer o worker para você, a partir de qualquer biblioteca de jobs presente nas suas dependências. Adicione mais na aba Workers da aplicação, ou escale o que já existe pela CLI:
railyard scale my-app worker=2
Veja Workers e jobs agendados para cron.
Arquivos estáticos
python manage.py collectstatic --noinput roda automaticamente na etapa de build — a mesma convenção usada pelo buildpack Python do Heroku — então WhiteNoise ou qualquer configuração de STATIC_ROOT já funciona, sem precisar de um passo no Dockerfile ou de um hook de pré-deploy. Uma aplicação que não usa django.contrib.staticfiles não é afetada, e uma falha aqui não bloqueia o resto do build. Defina DISABLE_COLLECTSTATIC=1 para desativar.
Configuração e secrets
DATABASE_URL é injetado automaticamente a partir do seu add-on de Postgres; REDIS_URL também é, assim que suas dependências fixarem um cliente Redis (redis, django-redis, rq) — aponte o broker e o result backend do Celery para ele você mesmo. Todo o resto — DJANGO_SETTINGS_MODULE, SECRET_KEY, feature flags — é uma variável de ambiente comum em Variáveis, ou railyard env:set my-app KEY=VALUE pela CLI, então a mesma imagem roda sem alterações do staging até a produção: paridade entre dev e produção, não um branch definido no momento do build. Aponte para um banco de dados ou Redis rodando como serviço próprio no Canvas com ${{redis.RAILYARD_PRIVATE_URL}} — resolvido por ambiente. Veja Variáveis e secrets.
Faça o deploy
- A partir de um repositório: cole a URL do Git, ou escolha pelo seletor depois de conectar o GitHub — o Railyard lê
requirements.txt/pyproject.toml, preenche o gunicorn, o comando de release com migrate eDATABASE_URL, e faz deploy a cada push. - Pela CLI:
railyard create my-app https://github.com/me/my-app --addons postgres,redis, ourailyard git:remote && git push railyard mainde dentro do repositório. - Com um clique: adicione o botão de deploy ao seu README, ou publique no catálogo de templates para qualquer pessoa poder lançar com os add-ons e variáveis já preenchidos.