O Ferreiro de Apps Streamlit Standalone
Forgue, gerencie e orquestre múltiplos aplicativos Streamlit em containers Docker com uma única ferramenta.
Você não precisa clonar este repositório para usar o Aesiron. Escolha uma das formas abaixo:
Instale diretamente do GitHub no seu ambiente Python:
pip install git+https://github.com/victorradael/aesiron.gitAgora o comando aesiron (ou seu alias mais curto, iron) estará disponível globalmente (ou no seu venv).
Se você tem Docker, pode usar a CLI sem instalar nada no seu host.
(Recomendamos usar uma tag de versão específica, ex: :0.1.0, para maior estabilidade):
# Crie um alias para facilitar o uso (você pode escolher aesiron ou iron)
alias iron='docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/armory -e HOST_PWD=$(pwd) -e HOST_UID=$(id -u) -e HOST_GID=$(id -g) victorradael/aesiron:latest'
# Forjando um app
iron forge meu-app --port 8501O Aesiron gerencia um Arsenal (Armory): diretório atual (cwd) onde seus apps independentes são criados.
-
Forjando um App:
aesiron forge meu-dashboard --port 8501
Isso cria a pasta
./meu-dashboardcom tudo que o app precisa (Dockerfile, Compose, Makefile local). -
Orquestração Massiva:
aesiron run # Sobe TODOS os apps encontrados na pasta aesiron list # Mostra quais apps estão rodando aesiron urls # Exibe as URLs de acesso de todos os apps aesiron dns-setup # Configura apenas esta maquina para resolver *.iron via /etc/hosts aesiron dns-reset # Remove as entradas locais do Aesiron do /etc/hosts
-
DNS da Rede Local: O Aesiron pode expor os apps por hostnames como
http://meu-app.iron, desde que os dispositivos da sua rede usem o DNS da maquina onde o Aesiron esta rodando.Para configurar apenas a maquina atual sem alterar o DNS global do sistema:
aesiron dns-setup
flowchart LR
Cliente[Cliente na LAN]
DNSLocal[Resolvedor local ou cliente configurado]
DNS[Aesiron DNS\ndnsmasq :53]
Gateway[Aesiron Gateway\nnginx :80]
App1[app-aesiron-xpto\nStreamlit :8501]
App2[app-aesiron-xpto2\nStreamlit :8502]
Cliente -->|consulta xpto.iron| DNSLocal
DNSLocal -->|usa DNS configurado| DNS
DNS -->|responde IP LAN do host| Cliente
Cliente -->|HTTP Host: xpto.iron| Gateway
Gateway -->|proxy reverso| App1
Cliente -->|HTTP Host: xpto2.iron| Gateway
Gateway -->|proxy reverso| App2
dnsmasqresponde qualquer*.ironcom o IP LAN da maquina onde o Aesiron roda para clientes da rede que apontarem para esse DNS.nginxrecebe a requisicao HTTP e escolhe o app certo pelo hostname.aesiron dns-setupnao troca o DNS global da maquina; ele escreve apenas entradas gerenciadas no/etc/hostspara os apps ativos.- os containers de DNS e gateway sao efemeros e so existem quando ha apps ativos para expor.
- os arquivos em
.aesiron-infra/sao gerados dinamicamente e nao devem ser versionados.
A CLI é auto-documentada. Para ver todos os comandos e opções disponíveis, basta rodar:
iron --help
iron <comando> --help- Ferreiro (CLI): A ferramenta que você instala para gerar e comandar.
- Arsenal (Armory): Sua pasta de trabalho onde os apps gerados residem.
- Apps Forjados: Cada app é autossuficiente (Docker + Makefile local).
Se você quer modificar a CLI do Aesiron:
- Clone o repositório:
git clone ... - Configure o ambiente de dev:
make setup-dev - Teste suas mudanças:
source .venv/bin/activate && aesiron help
Todos os apps compartilham a rede aesiron-net, permitindo comunicação direta entre eles e outros serviços Docker.
