FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=America/Bogota

# Fase 3.1 — Actualizar el sistema
RUN apt-get update && apt-get upgrade -y

# Fase 3.2 — Instalar dependencias previas
RUN apt-get install -y wget gnupg2 apt-transport-https gettext-base \
    && rm -rf /var/lib/apt/lists/*

# Fase 3.3 — Agregar repositorio oficial de Koha
RUN echo 'deb http://debian.koha-community.org/koha 25.11 main' \
      > /etc/apt/sources.list.d/koha.list

# Fase 3.4 — Agregar llave GPG
RUN wget -qO- https://debian.koha-community.org/koha/gpg.asc \
      | gpg --dearmor > /usr/share/keyrings/koha.gpg && \
    sed -i \
      's|deb http://debian.koha-community.org/koha|deb [signed-by=/usr/share/keyrings/koha.gpg] http://debian.koha-community.org/koha|' \
      /etc/apt/sources.list.d/koha.list

# Fase 3.5 — Instalar Koha (sin mariadb-server — usa RDS externo)
# koha-common instala RabbitMQ, Memcached y todas las dependencias automáticamente.
# Como efecto secundario instala mariadb-client vía default-mysql-client.
RUN apt-get update && apt-get install -y koha-common \
    && rm -rf /var/lib/apt/lists/*

# List::MoreUtils: la versión de Ubuntu 20.04 no exporta zip6 correctamente.
# cpanm instala una versión consistente PP+XS desde CPAN.
RUN apt-get update && apt-get install -y cpanminus build-essential && \
    cpanm --notest List::MoreUtils List::MoreUtils::XS && \
    rm -rf /var/lib/apt/lists/*

# Bypass mpm_itk initgroups()/setuid() que falla en Docker sin CAP_SETGID.
# La biblioteca intercepta initgroups() y devuelve 0 para que Apache arranque.
RUN printf '#include <grp.h>\nint initgroups(const char *u, gid_t g){return 0;}\n' \
      > /tmp/fakegroups.c && \
    gcc -shared -fPIC -o /usr/local/lib/libfakegroups.so /tmp/fakegroups.c && \
    rm /tmp/fakegroups.c

# Reemplazar mariadb-client con mysql-client-8.0.
# Ubuntu 20.04 instala MariaDB client via default-mysql-client (dependencia de koha-common),
# pero ese cliente NO soporta caching_sha2_password (plugin por defecto en RDS MySQL 8+).
# --allow-downgrades + --force-overwrite fuerzan la instalación aunque haya conflictos
# de paquetes, reemplazando el binario /usr/bin/mysql de MariaDB con el de MySQL 8.
RUN apt-get update && \
    apt-get install -y \
      --allow-downgrades \
      -o Dpkg::Options::="--force-overwrite" \
      mysql-client-8.0 && \
    rm -rf /var/lib/apt/lists/* && \
    echo "MySQL client activo: $(mysql --version)"

# Fase 3.7 — Habilitar módulos Apache requeridos
RUN a2enmod rewrite cgi headers proxy_http

# --- Archivos de migración ---
# SQL dump de la base de datos (Fase 4.1)
COPY prod_humboldt-2026-04-30/prod_humboldt-2026-04-30.sql.gz /migration/
# Archivos de la instancia: uploads, plugins, índices Zebra (Fase 4.2)
COPY prod_humboldt-2026-04-30/koha_files.tar.gz               /migration/
# Assets personalizados (Fase 8)
COPY prod_humboldt-2026-04-30/logo.png            /migration/assets/
COPY prod_humboldt-2026-04-30/logo.svg            /migration/assets/
COPY prod_humboldt-2026-04-30/hero-humboldt.jpg   /migration/assets/
COPY prod_humboldt-2026-04-30/hero-humboldt.webp  /migration/assets/
COPY prod_humboldt-2026-04-30/Amstelvar.ttf       /migration/assets/

# Plantillas de configuración (se instancian con variables de entorno en runtime)
COPY prod_humboldt-2026-04-30/etc/koha/sites/prod_humboldt/koha-conf.xml \
     /etc/koha/koha-conf.xml.tpl
COPY prod_humboldt-2026-04-30/etc/koha/sites/prod_humboldt/log4perl.conf \
     /etc/koha/log4perl.conf.tpl

COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

EXPOSE 80

ENTRYPOINT ["/entrypoint.sh"]
