O projeto sobe em dois serviços:
web: interface Streamlitbot: loop do bot (python dashboard.py --bot)
cp .env.example .env
# edite a .env com valores fortesdocker compose pull
docker compose up -d- Abra:
http://localhost:8501
docker compose logs -f botdocker compose downBanco SQLite (mvp_funds.db) e log (bot.log) ficam no volume nomeado obs_data em /app/data.
O workflow .github/workflows/main.yml e disparado em push na branch main e executa:
- build_and_push
docker/setup-buildx-actiondocker/login-actionnoghcr.iodocker/build-push-actionpublicando:ghcr.io/<owner>/<repo>:latestghcr.io/<owner>/<repo>:<sha>
O deploy da stack nao e feito pelo GitHub Actions. A atualizacao da aplicacao deve ser feita pelo Portainer, consumindo a imagem publicada no GHCR.
- nenhum secret adicional e necessario para o push no GHCR alem do
GITHUB_TOKENfornecido pelo proprio GitHub Actions
- registry
ghcr.ioconfigurado no Portainer, se a imagem for privada - stack configurada a partir de
docker-stack.yml, usandoghcr.io/<owner>/<repo>:latestou uma tag SHA especifica - variaveis obrigatorias da aplicacao preenchidas no Portainer
Use docker-stack.yml para deploy no Docker Swarm via Portainer.
Variaveis esperadas pela stack:
SWARM_NODE_HOSTNAMESESSION_SECRETDEFAULT_ADMIN_USERDEFAULT_ADMIN_PASSIMAGE_TAGopcional, com padraolatestOBS_IMAGEopcional, com padraoghcr.io/hefestox/obs