jasperserver-docker/Dockerfile
Rogério Lima 9fea30554f upgrade PostgreSQL 16→18 e melhorias de robustez
- PostgreSQL 18: atualiza imagem e corrige path de dados (/var/lib/postgresql)
- entrypoint: detecta schema ausente (jiresourcefolder) e reinstala automaticamente
- entrypoint: corrige captura de PIPESTATUS com set +e/set -e ao redor do pipeline
- logs: bind mount movido de /var/log para /var/log/jasperserver (não sobrescreve o sistema)
- download.sh: fonte do instalador migrada de SourceForge para Gitea interno
- Makefile: simplificado para build/up/down/clean/push/pull/logs + suporte a registry Gitea
- README: atualiza versão PG, URLs de download e adiciona instrução de publicação no Gitea

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 08:34:10 -03:00

66 lines
3.5 KiB
Docker

# ================================================================
# 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"]