Como implantar facilmente um aplicativo Streamlit e hospedar na nuvem
Streamlit emergiu como um revolucionário no mundo das aplicações de dados. Ele capacita desenvolvedores a transformar scripts de dados em aplicativos web interativos de forma rápida e fácil. No entanto, a jornada não termina na criação de um aplicativo. O próximo passo crucial é a implantação, que torna seu aplicativo Streamlit acessível aos usuários em todo o mundo, abrindo caminho para interação, feedback e aplicação no mundo real.
Neste guia abrangente, vamos mergulhar em várias plataformas para implantar seu aplicativo Streamlit, incluindo Streamlit Community Cloud, Heroku, AWS, Google Cloud e muito mais. Vamos guiá-lo em cada etapa, discutir problemas comuns e fornecer soluções para garantir um processo de implantação tranquilo. Então, vamos começar!
Você já ouviu falar dessa incrível ferramenta de análise de dados e visualização de dados que transforma seu aplicativo Streamlit em Tableau?
PyGWalker (opens in a new tab) é uma biblioteca Python que ajuda você a incorporar facilmente uma interface semelhante ao Tableau em seu próprio aplicativo Streamlit sem esforço. Confira este incrível vídeo produzido por Sven do Coding is Fun (opens in a new tab) demonstrando os passos detalhados para potencializar seu aplicativo Streamlit com esta poderosa Biblioteca de Visualização de Dados Python!
Agradecimentos especiais a Sven e sua grande contribuição (opens in a new tab) à comunidade do PyGWalker!
Além disso, você também pode conferir a Página do GitHub do PyGWalker (opens in a new tab) para mais exemplos do PyGWalker.
Parte 1: Implantação na DigitalOcean com Docker
A DigitalOcean, um popular provedor de infraestrutura de nuvem, oferece uma plataforma para implantar e dimensionar aplicativos que são executados simultaneamente em vários computadores. Aqui, vamos usar o Docker, uma plataforma que simplifica a criação, implantação e execução de aplicativos usando contêineres.
O que é o Docker?
O Docker é uma plataforma de código aberto que automatiza a implantação, dimensionamento e gerenciamento de aplicativos. Ele encapsula aplicativos em contêineres, que são pacotes executáveis independentes contendo tudo o que é necessário para executar um aplicativo.
Aqui está um guia passo a passo sobre como implantar seu aplicativo Streamlit na DigitalOcean usando o Docker:
- Crie um arquivo Dockerfile: Um Dockerfile é um documento de texto contendo todos os comandos para montar uma imagem. Aqui está um exemplo básico de um Dockerfile para um aplicativo Streamlit:
## Use uma imagem principal do Python como imagem pai
FROM python:3.7-slim
## Defina o diretório de trabalho no contêiner para /app
WORKDIR /app
## Adicione o conteúdo do diretório atual ao contêiner em /app
ADD . /app
## Instale os pacotes necessários especificados no requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
## Torne a porta 80 disponível para o mundo fora deste contêiner
EXPOSE 80
## Execute app.py quando o contêiner for iniciado
CMD streamlit run --server.port 80 app.py
-
Configure um droplet na DigitalOcean: Um droplet é uma plataforma de computação escalável com armazenamento adicional, segurança e capacidades de monitoramento. Você pode personalizar o tamanho, localização e software inicial do seu droplet.
-
Implante seu aplicativo: Depois que seu Dockerfile estiver pronto e seu droplet estiver em execução, você pode implantar seu aplicativo Streamlit. Aqui está um comando básico para construir sua imagem Docker e executá-la:
docker build -t meu-aplicativo-streamlit .
docker run -p 80:80 meu-aplicativo-streamlit
Parte 2: Streamlit Sharing
O Streamlit Sharing é uma plataforma que permite aos desenvolvedores implantar seus aplicativos Streamlit instantaneamente, sem nenhuma configuração. É uma excelente opção para aqueles que desejam compartilhar seus aplicativos de forma rápida e fácil.
Como usar o Streamlit Sharing
O uso do Streamlit Sharing é simples. Aqui está um guia passo a passo:
-
Envie seu aplicativo Streamlit para um repositório público do GitHub: O Streamlit Sharing implanta aplicativos diretamente do GitHub, portanto, seu aplicativo precisa estar em um repositório público.
-
Cadastre-se no Streamlit Sharing:
Acesse o site do Streamlit Sharing e clique em "Sign in with GitHub" para se cadastrar.
- Implante seu aplicativo: Depois de entrar, clique em "New app", selecione seu repositório do GitHub, o branch e o caminho do arquivo, e clique em "Deploy". Seu aplicativo estará no ar em apenas alguns minutos!
Aqui está um exemplo de como pode ser o painel do Streamlit Sharing:
Meus Aplicativos
- App 1 (Implantado)
- App 2 (Implantado)
- App 3 (Em andamento)
Novo app
- Repositório: meu-nome-de-usuário-github/meu-aplicativo-streamlit
- Branch: main
- Caminho do arquivo: app.py
Parte 3: Implantação como um Executável
Embora o Streamlit não ofereça suporte oficial para implantar aplicativos como arquivos executáveis para diferentes sistemas operacionais, é possível fazê-lo com algumas soluções alternativas. Aqui está um guia geral sobre como você pode abordar isso:
-
Empacote seu aplicativo: Você pode usar ferramentas como PyInstaller ou cx_Freeze para empacotar seu aplicativo Streamlit em um arquivo executável. Essas ferramentas coletam todos os arquivos e bibliotecas necessários para o funcionamento do seu aplicativo e os agrupam em um único arquivo.
-
Crie um instalador: Se você quiser distribuir seu aplicativo para outros usuários, talvez queira criar um instalador. Ferramentas como Inno Setup ou NSIS podem ajudá-lo com isso.
-
Teste seu executável: Antes de distribuir seu aplicativo, verifique se o executável funciona corretamente no sistema operacional de destino. Aqui está um comando de amostra para criar um executável usando o PyInstaller:
pyinstaller --onefile --add-data='myapp:myapp' app.py
Parte 4: Implantação no Heroku
O Heroku é uma plataforma de nuvem que permite implantar, executar e gerenciar aplicativos escritos em várias linguagens de programação. Aqui está um guia passo a passo sobre como implantar seu aplicativo Streamlit no Heroku:
-
Crie uma conta no Heroku: Registre-se em uma conta gratuita no Heroku, se você ainda não tiver uma.
-
Instale a Heroku CLI: A Interface de Linha de Comando (CLI) do Heroku é uma ferramenta que permite criar e gerenciar seus aplicativos Heroku diretamente do terminal.
-
Prepare seu aplicativo para o Heroku: O Heroku precisa de dois arquivos adicionais para implantar seu aplicativo Streamlit: um arquivo
Procfile
e um arquivosetup.sh
. OProcfile
informa ao Heroku qual comando usar para iniciar seu aplicativo, e o arquivosetup.sh
configura seu ambiente.
Aqui está como seus arquivos Procfile
e setup.sh
poderiam ser:
web: sh setup.sh && streamlit run app.py
mkdir -p ~/.streamlit/
echo "\
[general]\n\
email = \"seu-email@dominio.com.br\"\n\
" > ~/.streamlit/credentials.toml
echo "\
[server]\n\
headless = true\n\
enableCORS=false\n\
port = $PORT\n\
" > ~/.streamlit/config.toml
- Implante seu aplicativo: Assim que seu aplicativo estiver preparado, você pode implantá-lo no Heroku usando a Heroku CLI. Aqui está uma sequência de comandos de exemplo para implantar seu aplicativo:
git init
heroku create
git add .
git commit -m "Commit inicial"
git push heroku master
Após essas etapas, seu aplicativo Streamlit deve estar disponível no Heroku!
Parte 5: Implantação na Plataforma Google Cloud
A Google Cloud Platform (GCP) é uma suíte de serviços de computação em nuvem que roda na mesma infraestrutura que o Google usa internamente para seus produtos de usuário final. Ele fornece um ambiente robusto e escalável para implantar seus aplicativos Streamlit.
Implantação e segurança de um aplicativo Streamlit na GCP
Aqui está um guia passo a passo sobre como implantar seu aplicativo Streamlit na GCP:
-
Crie uma conta da GCP: Se você ainda não tiver uma, registre-se para uma conta da GCP.
-
Crie um novo projeto: Acesse o Console da GCP e crie um novo projeto.
-
Habilite o App Engine: Acesse a seção "App Engine" e habilite-o para o seu projeto.
-
Prepare seu aplicativo para a GCP: Semelhante ao Heroku, a GCP requer um arquivo
app.yaml
para configurar seu aplicativo. Aqui está um exemplo de arquivoapp.yaml
para um aplicativo Streamlit:
runtime: python39
instance_class: F2
automatic_scaling:
target_cpu_utilization: 0.65
entrypoint: streamlit run --server.port $PORT --server.enableCORS false app.py
- Implante seu aplicativo: Assim que seu aplicativo estiver pronto, você pode implantá-lo na GCP usando o Google Cloud SDK. Aqui está uma sequência de comandos de exemplo para implantar seu aplicativo:
gcloud app deploy
Após essas etapas, seu aplicativo Streamlit deve estar disponível na GCP!
Parte 6: Construindo Aplicativos Streamlit no Amazon SageMaker Studio
O Amazon SageMaker Studio é um ambiente de desenvolvimento totalmente integrado (IDE) para aprendizado de máquina. Ele fornece todas as ferramentas necessárias para construir, treinar e implantar modelos de aprendizado de máquina rapidamente.
Benefícios de Usar o Amazon SageMaker Studio
-
Serviço totalmente gerenciado: O Amazon SageMaker Studio cuida de toda a infraestrutura subjacente, permitindo que você se concentre na construção e implantação de seus aplicativos Streamlit.
-
Notebooks Jupyter integrados: Você pode criar facilmente notebooks Jupyter para explorar e visualizar seus dados.
-
Construção e treinamento de modelos: O SageMaker Studio fornece algoritmos incorporados e suporte para algoritmos personalizados, facilitando a construção e o treinamento de seus modelos de aprendizado de máquina.
-
Implantação de modelos: Depois que seu modelo estiver treinado, você poderá implantá-lo com um único clique no console do SageMaker Studio.
Parte 7: Implantação no Azure App Services
O Azure App Services é uma plataforma totalmente gerenciada para construir, implantar e dimensionar aplicativos da web. Ele suporta uma ampla variedade de linguagens de programação, incluindo Python, tornando-o uma ótima escolha para implantar seus aplicativos Streamlit.
Implantação de um Aplicativo Streamlit no Azure App Services
Aqui está um guia passo a passo sobre como implantar seu aplicativo Streamlit no Azure App Services:
-
Crie uma conta no Azure: Se você ainda não tiver uma, registre-se para uma conta no Azure.
-
Crie um novo App Service: Acesse o portal do Azure e crie um novo App Service.
-
Configure seu App Service: Escolha sua assinatura, grupo de recursos, nome, método de publicação (Código), pilha de tempo de execução (Python) e sistema operacional.
-
Implante seu aplicativo: Assim que o App Service estiver configurado, você poderá implantar seu aplicativo Streamlit usando o Azure CLI ou o Git. Aqui está uma sequência de comandos de exemplo para implantar seu aplicativo usando o Azure CLI:
az webapp up --sku F1 --name my-streamlit-app
Após essas etapas, seu aplicativo Streamlit deve estar disponível no Azure App Services!
Parte 8: Implantação de Pipelines de Aprendizado de Máquina no AWS Fargate
O AWS Fargate é um mecanismo de computação sem servidor para contêineres. Ele funciona tanto com o Amazon Elastic Container Service (ECS) quanto com o Amazon Elastic Kubernetes Service (EKS), facilitando a implantação de aplicativos em contêineres.
Implantação de um Aplicativo PyCaret e Streamlit no AWS Fargate
Aqui está um guia passo a passo sobre como implantar um pipeline de aprendizado de máquina desenvolvido com PyCaret e um aplicativo Streamlit no AWS Fargate:
- Crie um Dockerfile: Seu Dockerfile deve incluir as instruções necessárias para instalar o PyCaret, o Streamlit e todas as outras bibliotecas necessárias. Aqui está um exemplo básico:
## Use uma imagem de tempo de execução Python oficial como imagem pai
FROM python:3.7-slim
## Defina o diretório de trabalho no contêiner para /app
WORKDIR /app
## Adicione o conteúdo do diretório atual ao contêiner em /app
ADD . /app
## Instale os pacotes necessários especificados no requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
## Torne a porta 80 disponível para o mundo exterior deste contêiner
EXPOSE 80
## Execute app.py quando o contêiner for iniciado
CMD streamlit run --server.port 80 app.py
-
Construa e envie sua imagem Docker: Você pode usar a CLI do Docker para construir sua imagem Docker e enviá-la para um registro de contêiner como o Amazon Elastic Container Registry (ECR).
-
Crie uma nova definição de tarefa no AWS Fargate: Uma definição de tarefa é um arquivo de texto no formato JSON que descreve um ou mais contêineres que formam sua aplicação. Ele inclui a imagem do contêiner a ser usada, a CPU e a memória necessárias, a configuração de rede e muito mais.
-
Execute sua tarefa: Assim que sua definição de tarefa estiver configurada, você pode executar sua tarefa no AWS Fargate. Seu aplicativo Streamlit agora deve estar acessível no endereço IP público de sua tarefa.
Aqui está uma sequência de comandos de exemplo para construir sua imagem Docker e enviá-la para o Amazon ECR:
$(aws ecr get-login --no-include-email --region região)
docker build -t my-streamlit-app .
docker tag my-streamlit-app:latest my-ecr-repo/my-streamlit-app:latest
docker push my-ecr-repo/my-streamlit-app:latest
Após essas etapas, seu aplicativo PyCaret e Streamlit deve estar em execução no AWS Fargate!
Parte 9: Solucionando Erros de Implantação
Implantar um aplicativo Streamlit pode ser uma tarefa desafiadora às vezes, especialmente quando você encontra erros difíceis de decifrar. No entanto, entender esses erros comuns pode ajudar você a solucioná-los de forma eficaz.
Erros comuns de implantação e suas soluções
- ModuleNotFoundError: Esse erro ocorre quando o Python não consegue encontrar um módulo que seu aplicativo precisa para ser executado. Para resolver isso, verifique se todos os módulos necessários estão listados em seu arquivo
requirements.txt
.
ModuleNotFoundError: No module named 'nome-do-módulo'
- StreamlitAPIException: Esse erro ocorre quando há um problema com o seu código Streamlit. Verifique a mensagem de erro para obter detalhes e ajuste seu código adequadamente.
StreamlitAPIException: 'nome-da-função' não é um comando Streamlit válido.
- Falhas na construção do Docker: Se a construção do seu Docker falhar, geralmente é devido a erros no Dockerfile. Verifique o Dockerfile quanto a erros de sintaxe ou instruções ausentes.
ERROR: O serviço 'nome-do-serviço' falhou ao ser construído
- Tempo limite de implantação: Se sua implantação estiver demorando muito, pode ocorrer um tempo limite. Isso pode ser devido a uma conexão de internet lenta, uma imagem Docker grande ou um processo de construção complexo. Tente otimizar seu Dockerfile ou aumentar o limite de tempo limite.
Error: Tempo limite de implantação excedido.
Lembre-se de que a chave para solucionar problemas é entender a mensagem de erro. Não se intimide com o jargão técnico. Divida-o, entenda o que está dizendo e você será capaz de encontrar uma solução.
Conclusão
A implantação de um aplicativo Streamlit é uma etapa crucial no processo de desenvolvimento de aplicativos de dados. Isso permite que seu aplicativo seja acessível ao mundo, possibilitando interação do usuário e aplicação no mundo real. Neste guia, exploramos várias plataformas para implantar seu aplicativo Streamlit, incluindo Streamlit Community Cloud, Heroku, AWS, Google Cloud, Azure e outras.
Cada plataforma tem seus pontos fortes e fracos, e a melhor para você depende de suas necessidades e circunstâncias específicas. Encorajamos você a explorar essas opções, testá-las e encontrar aquela que melhor atenda às suas necessidades. Boa implantação!
Você já ouviu falar dessa incrível ferramenta de Análise de Dados e Visualização de Dados, que transforma seu aplicativo Streamlit em Tableau?
PyGWalker (opens in a new tab) é uma biblioteca em Python que ajuda você a incorporar facilmente uma interface semelhante ao Tableau em seu próprio aplicativo Streamlit.
Perguntas frequentes
-
Como faço para implantar meu aplicativo Streamlit?
A implantação de um aplicativo Streamlit envolve empacotar o aplicativo e suas dependências e, em seguida, fazer o upload para uma plataforma de hospedagem. As etapas exatas dependem da plataforma que você está usando. Este guia fornece instruções detalhadas para várias plataformas populares.
-
Como faço para hospedar um aplicativo Streamlit localmente?
Para hospedar um aplicativo Streamlit localmente, basta executar o comando
streamlit run seu-app.py
no seu terminal. Certifique-se de estar no diretório correto e ter todas as dependências necessárias instaladas. -
Quanto tempo leva para implantar um aplicativo Streamlit?
O tempo de implantação de um aplicativo Streamlit pode variar dependendo do tamanho do seu aplicativo, da velocidade da sua conexão com a internet e da plataforma que você está usando. No entanto, com uma boa configuração, geralmente pode ser feito em questão de minutos.
-
O Streamlit é melhor do que o Flask?
O Streamlit e o Flask são duas excelentes ferramentas, mas servem para propósitos diferentes. O Streamlit é projetado para construir aplicativos de dados de forma rápida e fácil, enquanto o Flask é um framework web mais geral que oferece mais controle sobre seu aplicativo. A melhor ferramenta depende de suas necessidades específicas.