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>
This commit is contained in:
Rogério de Lima Sousa 2026-06-28 08:34:10 -03:00
parent 8f172a65a6
commit 9fea30554f
6 changed files with 62 additions and 34 deletions

View File

@ -52,7 +52,7 @@ COPY config/default_master.properties /config/default_master.properties
RUN cp -r ${CATALINA_HOME}/lib /opt/tomcat-lib-orig RUN cp -r ${CATALINA_HOME}/lib /opt/tomcat-lib-orig
# ── Criar diretório para o marcador de instalação ─────────────────────────── # ── Criar diretório para o marcador de instalação ───────────────────────────
RUN mkdir -p /var/jasperserver /var/log RUN mkdir -p /var/jasperserver /var/log/jasperserver
# ── Copiar e preparar entrypoint ──────────────────────────────────────────── # ── Copiar e preparar entrypoint ────────────────────────────────────────────
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh

View File

@ -2,37 +2,33 @@
# Makefile — JasperReports Server Docker # Makefile — JasperReports Server Docker
# ================================================================ # ================================================================
.PHONY: build up down restart logs clean reinstall REGISTRY ?= gitea.solucaoti.net.br
IMAGE_NAME ?= rogeriolima/jasperserver
IMAGE_TAG ?= 8.2.0
FULL_IMAGE = $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)
.PHONY: build up down clean push pull logs
## Constrói a imagem Docker
build: build:
docker compose build docker compose build
## Sobe os containers em background
up: up:
docker compose up -d docker compose up -d
## Para e remove os containers
down: down:
docker compose down docker compose down
## Reinicia os containers ## Para e remove containers e volumes (reset completo)
restart:
docker compose restart
## Exibe os logs do JasperServer em tempo real
logs:
docker compose logs -f jasperserver
## Com grandes poderes vem grandes responsabilidades!
## Para, remove containers e volumes (reset completo)
clean: clean:
docker compose down -v docker compose down -v
## Limpa tudo e reinstala do zero logs:
reinstall: docker compose logs -f jasperserver
docker compose down -v
sudo rm -rf deploy push:
docker compose build docker tag jasperserver-jasperserver:latest $(FULL_IMAGE)
docker compose up -d docker push $(FULL_IMAGE)
pull:
docker pull $(FULL_IMAGE)
docker tag $(FULL_IMAGE) jasperserver-jasperserver:latest

View File

@ -2,7 +2,7 @@
Ambiente Dockerizado do **JasperReports Server 8.2.0 Community Edition** usando: Ambiente Dockerizado do **JasperReports Server 8.2.0 Community Edition** usando:
- **Tomcat 9** (imagem base `tomcat:9.0-jdk11-temurin`) - **Tomcat 9** (imagem base `tomcat:9.0-jdk11-temurin`)
- **PostgreSQL 14** (container separado) - **PostgreSQL 18** (container separado)
- **Docker Compose** para orquestração - **Docker Compose** para orquestração
--- ---
@ -34,8 +34,8 @@ chmod +x downloads/download.sh
bash downloads/download.sh bash downloads/download.sh
``` ```
> Se o download automático falhar, baixe manualmente de: > Se o download automático falhar, baixe manualmente do Gitea:
> https://sourceforge.net/projects/jr-community-installers/files/Server/ > https://gitea.solucaoti.net.br/rogeriolima/-/packages/generic/TIB_js-jrs-cp/8.2.0
> e coloque o arquivo `TIB_js-jrs-cp_8.2.0_bin.zip` na pasta `downloads/`. > e coloque o arquivo `TIB_js-jrs-cp_8.2.0_bin.zip` na pasta `downloads/`.
### 2. Configurar variáveis de ambiente ### 2. Configurar variáveis de ambiente
@ -107,9 +107,33 @@ docker compose down -v
--- ---
## 📦 Publicar nova versão do Instalador no Gitea
Após baixar o ZIP do instalador, publique-o no repositório de pacotes do Gitea para centralizar o artefato:
```bash
export GITEA_URL="https://gitea.solucaoti.net.br"
export GITEA_OWNER="rogeriolima"
export GITEA_USER="rogeriolima"
read -rs "GITEA_TOKEN?Token Gitea: "
echo
curl --fail-with-body \
--user "${GITEA_USER}:${GITEA_TOKEN}" \
--upload-file ./TIB_js-jrs-cp_8.2.0_bin.zip \
"${GITEA_URL}/api/packages/${GITEA_OWNER}/generic/TIB_js-jrs-cp/8.2.0/TIB_js-jrs-cp_8.2.0_bin.zip"
unset GITEA_TOKEN
```
> Execute a partir da pasta `downloads/`. O token precisa ter permissão de escrita em pacotes (`package:write`).
---
## 📋 Referências ## 📋 Referências
- [GEMINI.md](./GEMINI.md) — Guia de instalação standalone (base deste projeto) - [GEMINI.md](./GEMINI.md) — Guia de instalação standalone (base deste projeto)
- [JasperReports Server no SourceForge](https://sourceforge.net/projects/jr-community-installers/) - [JasperReports Server no SourceForge](https://sourceforge.net/projects/jr-community-installers/)
- [Imagem Docker Tomcat 9](https://hub.docker.com/_/tomcat) - [Imagem Docker Tomcat 9](https://hub.docker.com/_/tomcat)
- [Imagem Docker PostgreSQL 14](https://hub.docker.com/_/postgres) - [Imagem Docker PostgreSQL 18](https://hub.docker.com/_/postgres)

View File

@ -2,7 +2,7 @@
# docker-compose.yml — JasperReports Server 8.2.0 # docker-compose.yml — JasperReports Server 8.2.0
# #
# Serviços: # Serviços:
# - postgres: PostgreSQL 14 (persistência via volume) # - postgres: PostgreSQL 18 (persistência via volume)
# - jasperserver: JasperReports Server no Tomcat 9 # - jasperserver: JasperReports Server no Tomcat 9
# #
# Uso: # Uso:
@ -13,7 +13,7 @@ services:
# ── Banco de Dados ──────────────────────────────────────────── # ── Banco de Dados ────────────────────────────────────────────
postgres: postgres:
image: postgres:16 image: postgres:18
container_name: jasper_postgres container_name: jasper_postgres
# restart: always # restart: always
environment: environment:
@ -21,7 +21,7 @@ services:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB} POSTGRES_DB: ${POSTGRES_DB}
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql
networks: networks:
- jasper-net - jasper-net
healthcheck: healthcheck:
@ -55,7 +55,7 @@ services:
- ./deploy/lib:/usr/local/tomcat/lib # Driver JDBC PostgreSQL - ./deploy/lib:/usr/local/tomcat/lib # Driver JDBC PostgreSQL
- ./deploy/jasperserver:/var/jasperserver # Marcador de instalação - ./deploy/jasperserver:/var/jasperserver # Marcador de instalação
- ./deploy/keystore:/root # Keystore (.jrsksp) - ./deploy/keystore:/root # Keystore (.jrsksp)
- ./deploy/logs:/var/log # Logs - ./deploy/logs:/var/log/jasperserver # Logs
networks: networks:
- jasper-net - jasper-net

View File

@ -8,7 +8,7 @@ set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
FILENAME="TIB_js-jrs-cp_8.2.0_bin.zip" FILENAME="TIB_js-jrs-cp_8.2.0_bin.zip"
DOWNLOAD_URL="https://master.dl.sourceforge.net/project/jr-community-installers/Server/${FILENAME}" DOWNLOAD_URL="https://gitea.solucaoti.net.br/api/packages/rogeriolima/generic/TIB_js-jrs-cp/8.2.0/${FILENAME}"
DEST="${SCRIPT_DIR}/${FILENAME}" DEST="${SCRIPT_DIR}/${FILENAME}"
if [ -f "$DEST" ]; then if [ -f "$DEST" ]; then

View File

@ -57,15 +57,17 @@ install_jasperserver() {
# Executa o instalador CE no modo minimal (sem dados de exemplo) # Executa o instalador CE no modo minimal (sem dados de exemplo)
# O "echo y" responde automaticamente ao prompt de recriação do banco # O "echo y" responde automaticamente ao prompt de recriação do banco
echo "y" | ./js-install-ce.sh minimal 2>&1 | tee /var/log/jasper-install.log set +e
echo "y" | ./js-install-ce.sh minimal 2>&1 | tee /var/log/jasperserver/jasper-install.log
INSTALL_RC=${PIPESTATUS[1]} INSTALL_RC=${PIPESTATUS[1]}
set -e
if [ $INSTALL_RC -eq 0 ]; then if [ $INSTALL_RC -eq 0 ]; then
mkdir -p "$(dirname "$INSTALL_MARKER")" mkdir -p "$(dirname "$INSTALL_MARKER")"
touch "$INSTALL_MARKER" touch "$INSTALL_MARKER"
echo "✅ Instalação concluída com sucesso!" echo "✅ Instalação concluída com sucesso!"
else else
echo "❌ Falha na instalação! (exit code: $INSTALL_RC) Verifique /var/log/jasper-install.log" echo "❌ Falha na instalação! (exit code: $INSTALL_RC) Verifique /var/log/jasperserver/jasper-install.log"
exit 1 exit 1
fi fi
} }
@ -82,7 +84,13 @@ fi
prepare_config prepare_config
wait_for_postgres wait_for_postgres
if [ ! -f "$INSTALL_MARKER" ]; then DB_HAS_SCHEMA=$(PGPASSWORD="${JS_DB_PASSWORD}" psql -h "${JS_DB_HOST}" -p "${JS_DB_PORT:-5432}" \
-U "${JS_DB_USERNAME}" -d "${JS_DB_NAME}" -tAc \
"SELECT 1 FROM information_schema.tables WHERE table_name='jiresourcefolder'" 2>/dev/null)
if [ ! -f "$INSTALL_MARKER" ] || [ "$DB_HAS_SCHEMA" != "1" ]; then
[ "$DB_HAS_SCHEMA" != "1" ] && echo "⚠️ Schema ausente no banco. Reinstalando..."
rm -f "$INSTALL_MARKER"
install_jasperserver install_jasperserver
else else
echo "✅ JasperReports Server já instalado. Pulando instalação." echo "✅ JasperReports Server já instalado. Pulando instalação."