# Dockerfile para Cisco MAC Monitor HTTPS Service # =============================================== FROM rockylinux:8 # Metadatos LABEL maintainer="Equipo de Monitorización de Red" LABEL description="Monitor de direcciones MAC para Cisco via HTTPS API con soporte SSH legacy" LABEL version="2.1-https-service" # Variables de entorno ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV LANG=en_US.UTF-8 ENV LC_ALL=en_US.UTF-8 # Variables para el servicio HTTPS ENV HTTP_HOST=0.0.0.0 ENV HTTP_PORT=8443 # Actualizar sistema e instalar dependencias base RUN dnf update -y && \ dnf install -y \ python3 \ python3-pip \ python3-devel \ openssh-clients \ gcc \ openssl-devel \ libffi-devel \ krb5-devel \ curl \ openssl && \ dnf clean all # Crear usuario no privilegiado RUN useradd -m -u 1000 -s /bin/bash monitor # Copiar requirements.txt primero para cache de Docker COPY src/requirements.txt /tmp/requirements.txt # Instalar dependencias Python desde requirements.txt RUN pip3 install --no-cache-dir --upgrade pip && \ pip3 install --no-cache-dir -r /tmp/requirements.txt && \ rm /tmp/requirements.txt # Cambiar al usuario no privilegiado USER monitor WORKDIR /app # Copiar scripts principales COPY --chmod=755 --chown=monitor:monitor src/cisco_mac_monitor.py /app/ COPY --chmod=755 --chown=monitor:monitor src/cisco_mac_http_service.py /app/ # Exponer puerto HTTPS EXPOSE 8443 # Healthcheck para el servicio HTTPS HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \ CMD curl -k -f https://localhost:8443/health || exit 1 # Entry point para el servicio HTTPS ENTRYPOINT ["python3", "/app/cisco_mac_http_service.py"] CMD ["--host", "0.0.0.0", "--port", "8443"]