Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lastro

Um compose por serviço, e um menu central para subir, derrubar e configurar cada um sem precisar lembrar onde está nada.

┌ lastro ─────────────────────────────────────────────────────────┐
│     serviço      categoria   estado    config    porta  pendências   │
│ ●   postgresql   banco       rodando   ok        5433                │
│ ●   mysql        banco       rodando   ok        3308                │
│ ●   redis        cache       rodando   ok        6380                │
│ ●   pgadmin4     ferramenta  rodando   ok        8767                │
│ ○   phpmyadmin   ferramenta  parado    ok        8768   ⚠ precisa…   │
│ ○   ngrok        rede        parado    ausente   4040                │
│ ○   tailscale    rede        parado    ausente     —    ⚠ módulo tun │
│                                                                      │
│ ⏎ subir · d derrubar · e editar · l logs · X zerar dados · q sair    │
└──────────────────────────────────────────────────────────────────────┘

Instalar

git clone https://github.com/ronidomingues/lastro.git
cd lastro
./install.sh

Depois disso, lastro funciona de qualquer diretório:

lastro status
lastro up postgresql
lastro up <TAB><TAB>      # completa os serviços

O instalador não usa sudo: ele cria um link em ~/.local/bin e instala a completação de bash e zsh. Confere Python 3.10+, venv e Docker antes, e prepara o ambiente na primeira execução.

Ele cria um link, não uma cópia. O lastro lê os serviços de services/ dentro do repositório, então o repositório é a instalação — mover a pasta depois exige rodar ./install.sh de novo. O lastro doctor avisa se o comando do seu PATH apontar para outro clone.

Para remover: ./install.sh --uninstall. Ele tira só o link e a completação; o repositório, os .env, os contêineres e os volumes ficam intactos.

Sem instalar, ./lastro dentro do repositório funciona igual.

Também funciona sem o menu

Tudo que a interface faz tem um comando equivalente — os dois chamam o mesmo código:

./lastro list                    # o catálogo
./lastro help postgresql         # referência do serviço, gerada do manifesto
./lastro man postgresql          # manual completo: uso, erros e soluções
./lastro status                  # o que está de pé
./lastro config postgresql       # preenche o .env pelo formulário
./lastro up pgadmin4             # sobe (e oferece subir as dependências)
./lastro restart redis              # recria se a definição mudou
./lastro logs redis
./lastro down mysql              # preserva os dados
./lastro destroy redis           # APAGA os volumes (pede o id digitado)
./lastro net create              # cria a rede compartilhada
./lastro completion bash         # script de completação, se quiser instalar à mão

Os serviços

Serviço Imagem Local Na rede
postgresql postgres:18.6-alpine 127.0.0.1:5433 postgresql:5432
mysql mysql:8.4 127.0.0.1:3308 mysql:3306
mongodb mongo:8 127.0.0.1:27018 mongodb:27017
qdrant qdrant/qdrant:v1.12.4 127.0.0.1:6333 qdrant:6333
meilisearch getmeili/meilisearch:v1.11 127.0.0.1:7700 meilisearch:7700
neo4j neo4j:5-community 127.0.0.1:7474 · :7687 neo4j:7687
redis redis:8-alpine 127.0.0.1:6380 redis:6379
pgadmin4 dpage/pgadmin4:9.8 127.0.0.1:8767 pgadmin4:80
phpmyadmin phpmyadmin:5.2-apache 127.0.0.1:8768 phpmyadmin:80
mongo-express mongo-express:1.0.2 127.0.0.1:8769 mongo-express:8081
n8n n8nio/n8n:2.38.1 127.0.0.1:5680 n8n:5678
ngrok ngrok/ngrok:3-alpine 127.0.0.1:4040
motioneye ghcr.io/motioneye-project/motioneye:0.44.0 127.0.0.1:8765 motioneye:8765
tailscale tailscale/tailscale:stable

Todos publicam em 127.0.0.1, nunca em 0.0.0.0. ngrok e tailscale estão atrás de perfil e não sobem sem --profile.

Como funciona

Cada pasta em services/ tem quatro arquivos:

services/postgresql/
├── compose.yml      # o serviço
├── service.yaml     # o manifesto: o que é configurável, de quem depende
├── .env.example     # versionado, sem segredos, serve de documentação
└── .env             # gerado; 0600, fora do git

O .env é derivado do manifesto e do .env.example — e preserva todos os comentários deste, então continua servindo de documentação depois de preenchido.

Documentação de cada serviço

Dois comandos, com propósitos diferentes:

lastro help <serviço>    # referência GERADA do manifesto
lastro man  <serviço>    # manual escrito à mão

O help é derivado do service.yaml: sinopse, campos com tipo e validação, perfis, dependências, portas e volumes. Por ser gerado, não tem como ficar desatualizado — um campo novo aparece nele sozinho.

O man cobre o que nenhum manifesto sabe: para que serve, como usar, os problemas conhecidos e a solução de cada um. Fica em services/<id>/README.md, e o lastro doctor cobra que exista.

Acrescentar um serviço

Não exige tocar em nenhuma linha de Python — o gerenciador descobre o serviço pelos arquivos.

services/<id>/
├── compose.yml      o serviço
├── service.yaml     o manifesto: o que é configurável, de quem depende
├── .env.example     gabarito versionado, sem segredos
└── README.md        o manual do serviço

O passo a passo completo, com as sete decisões antes de começar, as regras que o carregamento impõe, as dez armadilhas e um exemplo montado do zero: docs/07-adicionar-servico.md.

Dados

down preserva. Apagar é outro comando (destroy, tecla X), com confirmação por digitação do id. Detalhes e receita de backup em docs/08-volumes-e-backup.md.

Documentação

docs/ — visão geral, convenções, referência do manifesto, rede, portas, riscos, e como adicionar serviços.

Testes

.venv/bin/python -m unittest discover -s manager/tests

Licença

MIT — ver LICENSE.

About

Catálogo de serviços Docker de apoio ao desenvolvimento, com menu central no terminal para subir, configurar e derrubar cada um sob demanda.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages