REST API para la gestión básica de un deployment.
- Gestión del deployment: Inicia, detiene y borrar el deploy (
compose.yaml) - Gestión de variables de entorno: Lee configuración de
x-env-varsencompose.yamly permite actualizar valores en.env - Control de contenedores: Inicia, detiene y reinicia contenedores del deploy
- Logs en tiempo real: WebSocket para streaming de logs de contenedores
- Validación de tipos: Valida automáticamente valores según schemas (regex, rangos, enums)
- Python 3.8+
- Docker y Docker Compose
# Crear entorno virtual
python3 -m venv .venv
source .venv/bin/activate
# Instalar como librería
pip install base-deployment-controller# Ejecutar la app demo desde la raíz del repo
python3 main.pyEl servidor estará disponible en http://localhost:8000
from base_deployment_controller import create_app
app = create_app(
compose_file="compose.yaml",
env_file=".env",
)from fastapi import APIRouter
from base_deployment_controller import AppBuilder
custom_router = APIRouter(prefix="/custom")
builder = AppBuilder("compose.yaml", ".env")
app = builder.register_router(custom_router).build()Obtiene información sobre el deploy:
curl http://localhost:8000/Controla el deploy:
# Levanta todos los servicio del deploy
curl -X POST http://localhost:8000/upObtiene todas las variables de entorno con sus valores actuales:
curl http://localhost:8000/envsActualiza variables de entorno. Usa restart_services (por defecto true) para controlar si se reinician los servicios afectados.
# Actualización múltiple
curl -X PUT http://localhost:8000/envs \
-H "Content-Type: application/json" \
-d '{"variables": {"MCC": "214", "MNC": "07"}, "restart_services": false}'Lista el estado de todos los contenedores:
curl http://localhost:8000/containersInformación en tiempo real sobre los cambios de estado de los contenedores (SSE):
curl -N http://localhost:8000/containers/eventsControla un contenedor específico:
# Reiniciar el MME
curl -X POST http://localhost:8000/containers/mme/restartLogs en tiempo real via WebSocket:
const ws = new WebSocket('ws://localhost:8000/containers/mme/logs');
ws.onmessage = (event) => {
console.log(event.data);
};FastAPI genera automáticamente documentación interactiva:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- compose.yaml: Define servicios y dependencias
- x-env-vars: Schema maestro con validaciones
- .env: Valores en tiempo de ejecución
Las variables se validan según el schema de x-env-vars:
- String con regex:
"string:0;^\d{3}$"- MCC debe ser 3 dígitos - Integer con rango:
"integer:0;2048"- MAX_NUM_UE entre 0-2048 - Enum:
"enum:tun,tap"- UPF_TUNTAP_MODE solo acepta tun o tap
- Solo permite actualizar variables existentes en el schema
- No permite agregar nuevas variables
- No permite eliminar variables
- Valida todos los valores antes de escribir en
.env
Este proyecto es parte del controlador de despliegue 5G de Tknika.