# ================================================================
# Dockerfile — JasperReports Server 8.2.0 Community Edition
#
# Base: tomcat:9.0-jdk11-temurin (contém Tomcat 9 + JDK 11)
#
# Referências:
#   - GEMINI.md (guia de instalação standalone)
#   - https://sourceforge.net/projects/jr-community-installers/
# ================================================================

FROM tomcat:9.0-jdk11-temurin

LABEL maintainer="jasperserver-docker" \
      version="8.2.0" \
      description="JasperReports Server 8.2.0 CE no Tomcat 9"

# ── Variáveis de ambiente ────────────────────────────────────────────────────
ENV JASPER_VERSION=8.2.0 \
    JASPER_INSTALL_DIR=/opt/jasperreports-server-cp-8.2.0-bin \
    JAVA_OPTS="-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" \
    CATALINA_OPTS="-Xms1024M -Xmx2048M -server -XX:+UseParallelGC"

# ── Instalar dependências ────────────────────────────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
    unzip \
    wget \
    postgresql-client \
    dos2unix \
    && rm -rf /var/lib/apt/lists/*

# ── Remover webapps padrão do Tomcat ────────────────────────────────────────
RUN rm -rf ${CATALINA_HOME}/webapps/*

# ── Copiar e extrair o instalador do JasperReports ──────────────────────────
# O arquivo deve existir em ./downloads/ antes de executar o build
COPY downloads/TIB_js-jrs-cp_8.2.0_bin.zip /tmp/

RUN echo "📦 Extraindo JasperReports Server ${JASPER_VERSION}..." \
    && unzip -q /tmp/TIB_js-jrs-cp_8.2.0_bin.zip -d /opt/ \
    && rm /tmp/TIB_js-jrs-cp_8.2.0_bin.zip \
    && echo "✅ Extração concluída."

# ── Ajustar permissões dos scripts (conforme GEMINI.md) ─────────────────────
RUN chmod -R u+rwx ${JASPER_INSTALL_DIR}/ \
    && find ${JASPER_INSTALL_DIR}/buildomatic -name "*.sh" -exec chmod +x {} \;

# ── Copiar arquivo de configuração base ─────────────────────────────────────
# (o entrypoint.sh aplica as variáveis de ambiente em tempo de execução)
COPY config/default_master.properties /config/default_master.properties

# ── Backup dos libs originais do Tomcat (necessário para bind mounts) ────
RUN cp -r ${CATALINA_HOME}/lib /opt/tomcat-lib-orig

# ── Criar diretório para o marcador de instalação ───────────────────────────
RUN mkdir -p /var/jasperserver /var/log/jasperserver

# ── Copiar e preparar entrypoint ────────────────────────────────────────────
COPY entrypoint.sh /entrypoint.sh
RUN dos2unix /entrypoint.sh && chmod +x /entrypoint.sh

# ── Porta do Tomcat ─────────────────────────────────────────────────────────
EXPOSE 8080

# ── Ponto de entrada ────────────────────────────────────────────────────────
ENTRYPOINT ["/entrypoint.sh"]
