# Dockerfile para Cisco MAC Monitor con compatibilidad SSH legacy # =============================================================== FROM rockylinux:8 # Metadatos LABEL maintainer="Equipo de Monitorización de Red" LABEL description="Monitor de direcciones MAC para dispositivo Cisco con soporte SSH legacy" LABEL version="2.0-ssh-compat" # Variables de entorno ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV LANG=en_US.UTF-8 ENV LC_ALL=en_US.UTF-8 # 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 && \ dnf clean all # Crear usuario no privilegiado RUN useradd -m -u 1000 -s /bin/bash monitor # Instalar dependencias Python con versiones específicas para compatibilidad RUN pip3 install --no-cache-dir --upgrade pip && \ pip3 install --no-cache-dir \ 'paramiko>=2.12.0,<4.0' \ 'PyYAML>=5.0,<7.0' \ 'cryptography>=3.4.8,<42.0' # Cambiar al usuario no privilegiado USER monitor WORKDIR /app # Copiar scripts principales COPY --chown=monitor:monitor cisco_mac_monitor.py /app/ COPY --chown=monitor:monitor test_compatibility.py /app/ # Permisos de ejecución USER root RUN chmod +x /app/cisco_mac_monitor.py /app/test_compatibility.py USER monitor # Healthcheck mejorado que verifica la configuración SSH HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD python3 /app/test_compatibility.py > /dev/null && \ python3 /app/cisco_mac_monitor.py --help > /dev/null || exit 1 # Entry point ENTRYPOINT ["python3", "/app/cisco_mac_monitor.py"]