Flask
Faça deploy de Flask com gunicorn, Postgres, migrations e workers RQ ou Celery.
Passo a passo: Fazer deploy de Flask no DigitalOcean · Fazer deploy de Flask no Hetzner · Fazer deploy de Flask no Vultr · Fazer deploy de Flask no OVHcloud · Fazer deploy de Flask no Scaleway · Fazer deploy de Flask no UpCloud
- Detectado pelo
requirements.txtoupyproject.tomlque listamflask. - Web: gunicorn na
$PORTcomapp:app. Se seu app estiver em outro lugar, defina o start command para o seumodule:callable(para uma app factory,"myapp:create_app()"). - Release: nenhum por padrão. Com Flask-Migrate, defina como
flask db upgrade; com Alembic,alembic upgrade head. Uma linharelease:noProcfileé usada quando presente. - Banco de dados:
psycopg→ Postgres, comDATABASE_URLinjetado. - Workers e cron: o RQ é oferecido quando é uma dependência. Para Celery, adicione
worker: celery -A myapp.celery workerao seuProcfileou adicione na aba Workers.
Workers são um segundo processo do mesmo app
O Flask não tem uma convenção própria de worker, então o Railyard simplesmente aplica a regra 12-factor direto: declare um segundo processo no seu Procfile e ele escala de forma independente do web.
web: gunicorn app:app --bind 0.0.0.0:$PORT
worker: rq worker --url $REDIS_URL
Ou adicione na aba Workers do app sem tocar no repositório, e escale qualquer um deles pela CLI:
railyard scale my-app worker=2
O RQ é oferecido automaticamente quando é uma dependência; o Celery não é detectado automaticamente para Flask — não existe uma convenção única de onde a app do Celery vive — então declare o comando dele você mesmo. Veja Workers e jobs agendados para cron: um comando agendado ali, ou um segundo processo worker rodando celery -A myapp.celery beat.
Configuração e secrets
DATABASE_URL é injetado assim que psycopg/psycopg2 é uma dependência, e REDIS_URL assim que um cliente Redis (redis, rq) é. Todo o resto — SECRET_KEY, FLASK_ENV, feature flags — é uma variável de ambiente comum em Variables, ou railyard env:set my-app KEY=VALUE pela CLI, de forma que a mesma imagem roda sem alterações de staging até produção: paridade dev/prod, não um branch em tempo de 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.
Fazendo o deploy
- A partir de um repositório: cole a URL do Git, ou escolha no seletor depois que o GitHub estiver conectado — o Railyard lê
requirements.txt/pyproject.toml, preenche o gunicorn e aDATABASE_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 maindentro do repositório. - Um clique só: adicione o botão de deploy ao seu README, ou publique no catálogo de templates para qualquer pessoa lançar com os addons e variáveis já preenchidos.