Files
controles/docker-compose.crossplatform.yml
Mateus Tavares 2b1668206d - inits centralizados, READMEs atualizados
- padronizando o nome de get_db_connection e session para get_db_session, para não confundir com session do Flask ou sessoes web

- corrigindo potenciais erros

-- has_permission nao consegue com lazy load carregar permission depois de load_user fechar a conexao, entao joinedLoad com Permission antes de fechar

-- db.rollback não existe caso db = get_db_session() apareça muito depois dentro do try, padronizando antes de try

--- comparar role por nivel (Role.SECRETARIO_GERAL) e nao por nome ("Secretario Geral")

- unificacao de get_otp_qr_code

- mudança de nowutc() para now(UTC) conforme novo padrão
2026-02-20 17:19:15 -03:00

63 lines
1.3 KiB
YAML

services:
# Redis Cache Service
redis:
image: redis:7-alpine
container_name: controles_redis
volumes:
- redis_data:/data
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
restart: unless-stopped
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 30s
timeout: 10s
retries: 3
networks:
- controles_network
# Flask Application
app:
build: .
container_name: controles_app
ports:
- "5000:5000"
environment:
- FLASK_APP=app.py
- FLASK_ENV=production
- REDIS_URL=redis://redis:6379/0
- DATABASE_URL=sqlite:////data/database.db
# DEV apenas para facilitar testes, não deve ser usado em produção
- ADMIN_OTP_SECRET=JBSWY3DPEHPK3PXP
# Produção definir em .env
#- ADMIN_OTP_SECRET=${ADMIN_OTP_SECRET}
volumes:
- app_data:/data
- app_logs:/app/logs
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
depends_on:
redis:
condition: service_healthy
restart: unless-stopped
networks:
- controles_network
volumes:
redis_data:
driver: local
app_data:
driver: local
app_logs:
driver: local
networks:
controles_network:
driver: bridge