Se você tem uma aplicação Python saiba que a Vercel pode ser uma solução gratuita para você fazer de deploy de suas aplicações.
- Limitação: Se você usa Python e desenvolve para Web, provavelmente usa Django. O Django é muito vínculado ao SQL. Se você precisa migrar dados num banco de dados SQL, a Vercel não é a solução para você. Talvez, configurando para usar um banco de dados remotamente, talvez funcione. Nunca testei.
- Para quem isso serve, então? Qualquer pessoa que tenha uma aplicação Python que só faz aquisições HTML, renderizar HTML, ou que tenha uma API REST, por exemplo. Irei mostrar algumas possibilidades futuramente.
Iniciando com Flask Framework
Flask é o principal micro framework do Python para criar aplicativos Web. Apesar de ser minimalista, podemos criar, com flexibilidade, muitas aplicações.
Você pode se aprofundar no Flask olhando sua documentação. Veja também
- https://flask-restx.readthedocs.io/en/latest/ (Documentar sua API REST)
- https://flask-sqlalchemy.palletsprojects.com/en/2.x/ (Camada de abstração de banco de dados SQL)
Na aplicação criada, não serão explicados todos os detalhes, já que essa não é a finalidade. O Flask foi escolhido justamente por minimalista. Por inspeção, já conseguimos entender o básico de seu funcionamento.
Vamos lá.
Primeiros passos da nossa aplicação
O primeiro passo é ter instalado em sua máquina o Python 3 e Node.js. Se você usa Linux com Kernel recente, o Python já deve instalado.
Instalando a CLI da Vercel
Com nodejs
instalado, vamos instalar a CLI da Vercel globalmente com
|
|
Criando ambiente de desenvolvimento
Outro passo é criar um ambiente de desenvolvimento virtual para rodar o projeto. Geralmente, recomendam o uso do virtualenv
, mas pode ser usado o modulo venv
também.
Nesse link mostro como instalar o miniconda
e criar um ambiente de desenvolvimento. A vantagem do miniconda
é que podemos instalar o nodejs
também.
Configurando o projeto
Vamos criar uma simples aplicação, com algumas rotas. Nada muito complicado. Teremos a estrutura recomendada pela Vercel
|
|
A pasta api
terá nossa aplicação Flask. A pasta data
podemos colocar aquivos para serem lidos. O arquivo requirements.txt
terá as dependências do nosso projeto. Por último, o arquivo vercel.json
será responsável por configurar nosso projeto para subir na Vercel.
Primeiro, criaremos uma pasta para o projeto para adicionarmos esses arquivos
|
|
Na minha máquina, usei o modulo venv
para criar o ambiente virtual
|
|
Se preferir o virtualenv
|
|
Agora com ambiente ativado podemos instalar as dependências
pip install Flask
Seguinda a estrutua proposta, abra arquivo index.py
com seu editor favorito. Recomendo o VSCode, Sublime Text 3 ou Atom.
|
|
Criamos algumas rotas. Note que a rota /api/cervejas
precisa do arquivo data.json
. Vamos preencher esse arquivo
|
|
Esses dados foram retirados de um banco de dados chamado open brewery db.
Agora no terminal
|
|
Por padrão, o Flask utiliza a porta 5000. Então, em seguida abra o link http://127.0.0.1:5000/ no seu navegador.
Você pode verificar se todas as rotas estão funcionando
- http://127.0.0.1:5000/
- http://127.0.0.1:5000/about
- http://127.0.0.1:5000/portfolio
- http://127.0.0.1:5000/contact
- http://127.0.0.1:5000/api/cervejas
- http://127.0.0.1:5000/api/livros
Deploy na Vercel e Serverless Functions
Vercel é uma plataforma em nuvem para sites estáticos (Jamstack) e Serverless Functions que se adapta perfeitamente ao seu fluxo de trabalho. Ele permite que os desenvolvedores hospedem sites e serviços da web com deploys instantâneos, escalados automaticamente e não requer supervisão, tudo sem configuração.
A Vercel também é o responsável pelo incrível Next.js.
Há duas formas para o deploy. Aqui mostrarei como fazer localmente. A outra forma seria usar um repositório Git (Gitlab, GitHub, BitBucket).
Lembra da estrutura de pastas?
|
|
Não importando a forma de deploy, precisaremos criar um arquivo com as dependências do projeto. Para isso
|
|
que passará todos os pacotes instalados no nosso ambiente para o arquivo requirements.txt
Agora precisaremos editar o arquivo vercel.json
na raiz do projeto com as algumas informações. Esse arquivo é o responsável de explicar que temos uma aplicação Python e, se houverem, quais são suas rotas (para mais informações)
|
|
Meio grande? Também achei.
Notou que em “routes” a chave “dest” se repete? Então vamos reduzir esse bagunça para algo mais legível
|
|
Após isso, basta usar a CLI da Vercel. Veja as opções disponíveis com vercel --help
Vamos testar localmente (afinal, não queremos fazer deploy de algo que não funciona)
|
|
A saída com comando deverá ser algo como
|
|
E ao final, ele dá acesso ao http://localhost:3000
Para fazer o deploy da aplicação
|
|
Para produção
|
|
Em todos os casos, ele mostrará um link para acessar sua aplicação.
OBS: Não estou falando sobre variáveis de ambiente. Mais caso precise, utilize o site da vercel
para expor as variáveis de ambiente que sua aplicação necessita.
Se quiser acessar a aplicação vercel-flask-cauachagas.vercel.app