initial commit

This commit is contained in:
2025-10-26 23:39:49 -05:00
commit 5fb0909e8d
120 changed files with 11279 additions and 0 deletions

192
scripts/docker.sh Executable file
View File

@@ -0,0 +1,192 @@
#!/bin/bash
# Scripts de utilidades para Docker
set -e
# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Funciones de utilidad
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
# Función para construir la imagen
build() {
log_info "Construyendo imagen Docker..."
docker build -t balotario:latest .
log_success "Imagen construida exitosamente"
}
# Función para ejecutar en desarrollo
dev() {
log_info "Iniciando contenedor en modo desarrollo..."
docker run -it --rm \
-p 5000:5000 \
-v $(pwd):/app \
-e FLASK_ENV=development \
-e FLASK_DEBUG=true \
-e DOCKER_CONTAINER=true \
--name balotario-dev \
balotario:latest
}
# Función para ejecutar en producción
prod() {
log_info "Iniciando contenedor en modo producción..."
docker run -d \
-p 5000:5000 \
-e FLASK_ENV=production \
-e FLASK_DEBUG=false \
-e DOCKER_CONTAINER=true \
--name balotario-prod \
--restart unless-stopped \
balotario:latest
log_success "Contenedor iniciado en modo producción"
log_info "Accede a: http://localhost:5000"
}
# Función para usar Docker Compose
compose_up() {
log_info "Iniciando servicios con Docker Compose..."
docker-compose up -d
log_success "Servicios iniciados"
log_info "Aplicación: http://localhost:5000"
log_info "Nginx: http://localhost:80"
}
# Función para detener Docker Compose
compose_down() {
log_info "Deteniendo servicios..."
docker-compose down
log_success "Servicios detenidos"
}
# Función para ver logs
logs() {
local service=${1:-balotario}
log_info "Mostrando logs de $service..."
docker-compose logs -f $service
}
# Función para limpiar contenedores e imágenes
clean() {
log_warning "Limpiando contenedores e imágenes..."
# Detener contenedores
docker stop balotario-dev balotario-prod 2>/dev/null || true
docker rm balotario-dev balotario-prod 2>/dev/null || true
# Limpiar con docker-compose
docker-compose down --rmi all --volumes --remove-orphans 2>/dev/null || true
# Limpiar imágenes huérfanas
docker image prune -f
log_success "Limpieza completada"
}
# Función para mostrar estado
status() {
log_info "Estado de contenedores:"
docker ps -a --filter "name=balotario"
echo ""
log_info "Estado de servicios Docker Compose:"
docker-compose ps
}
# Función para entrar al contenedor
shell() {
local container=${1:-balotario-prod}
log_info "Entrando al contenedor $container..."
docker exec -it $container /bin/bash
}
# Función de ayuda
help() {
echo "🐳 Scripts de Docker para Balotario"
echo ""
echo "Uso: $0 <comando>"
echo ""
echo "Comandos disponibles:"
echo " build - Construir imagen Docker"
echo " dev - Ejecutar en modo desarrollo"
echo " prod - Ejecutar en modo producción"
echo " compose-up - Iniciar con Docker Compose"
echo " compose-down - Detener Docker Compose"
echo " logs [service]- Ver logs (default: balotario)"
echo " clean - Limpiar contenedores e imágenes"
echo " status - Mostrar estado de contenedores"
echo " shell [name] - Entrar al contenedor"
echo " help - Mostrar esta ayuda"
echo ""
echo "Ejemplos:"
echo " $0 build"
echo " $0 compose-up"
echo " $0 logs nginx"
echo " $0 shell balotario-prod"
}
# Función principal
main() {
case "${1:-help}" in
build)
build
;;
dev)
build
dev
;;
prod)
build
prod
;;
compose-up)
compose_up
;;
compose-down)
compose_down
;;
logs)
logs $2
;;
clean)
clean
;;
status)
status
;;
shell)
shell $2
;;
help|*)
help
;;
esac
}
# Verificar que Docker esté instalado
if ! command -v docker &> /dev/null; then
log_error "Docker no está instalado"
exit 1
fi
# Ejecutar función principal
main "$@"