From 9fea30554fcca5ee1c1b6db5d4b6caa80a4d7dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rog=C3=A9rio=20Lima?= Date: Sun, 28 Jun 2026 08:34:10 -0300 Subject: [PATCH] =?UTF-8?q?upgrade=20PostgreSQL=2016=E2=86=9218=20e=20melh?= =?UTF-8?q?orias=20de=20robustez?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- Dockerfile | 2 +- Makefile | 38 +++++++++++++++++--------------------- README.md | 32 ++++++++++++++++++++++++++++---- docker-compose.yml | 8 ++++---- downloads/download.sh | 2 +- entrypoint.sh | 14 +++++++++++--- 6 files changed, 62 insertions(+), 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index d1dcd6c..bb1c97b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -52,7 +52,7 @@ COPY config/default_master.properties /config/default_master.properties 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 +RUN mkdir -p /var/jasperserver /var/log/jasperserver # ── Copiar e preparar entrypoint ──────────────────────────────────────────── COPY entrypoint.sh /entrypoint.sh diff --git a/Makefile b/Makefile index 6486edc..8f49fe1 100644 --- a/Makefile +++ b/Makefile @@ -2,37 +2,33 @@ # 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: docker compose build -## Sobe os containers em background up: docker compose up -d -## Para e remove os containers down: docker compose down -## Reinicia os containers -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) +## Para e remove containers e volumes (reset completo) clean: docker compose down -v -## Limpa tudo e reinstala do zero -reinstall: - docker compose down -v - sudo rm -rf deploy - docker compose build - docker compose up -d +logs: + docker compose logs -f jasperserver + +push: + docker tag jasperserver-jasperserver:latest $(FULL_IMAGE) + docker push $(FULL_IMAGE) + +pull: + docker pull $(FULL_IMAGE) + docker tag $(FULL_IMAGE) jasperserver-jasperserver:latest diff --git a/README.md b/README.md index 1a1f9a3..604e317 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Ambiente Dockerizado do **JasperReports Server 8.2.0 Community Edition** usando: - **Tomcat 9** (imagem base `tomcat:9.0-jdk11-temurin`) -- **PostgreSQL 14** (container separado) +- **PostgreSQL 18** (container separado) - **Docker Compose** para orquestração --- @@ -34,8 +34,8 @@ chmod +x downloads/download.sh bash downloads/download.sh ``` -> Se o download automático falhar, baixe manualmente de: -> https://sourceforge.net/projects/jr-community-installers/files/Server/ +> Se o download automático falhar, baixe manualmente do Gitea: +> 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/`. ### 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 - [GEMINI.md](./GEMINI.md) — Guia de instalação standalone (base deste projeto) - [JasperReports Server no SourceForge](https://sourceforge.net/projects/jr-community-installers/) - [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) diff --git a/docker-compose.yml b/docker-compose.yml index f73748d..e12c8b6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ # docker-compose.yml — JasperReports Server 8.2.0 # # Serviços: -# - postgres: PostgreSQL 14 (persistência via volume) +# - postgres: PostgreSQL 18 (persistência via volume) # - jasperserver: JasperReports Server no Tomcat 9 # # Uso: @@ -13,7 +13,7 @@ services: # ── Banco de Dados ──────────────────────────────────────────── postgres: - image: postgres:16 + image: postgres:18 container_name: jasper_postgres # restart: always environment: @@ -21,7 +21,7 @@ services: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - - postgres_data:/var/lib/postgresql/data + - postgres_data:/var/lib/postgresql networks: - jasper-net healthcheck: @@ -55,7 +55,7 @@ services: - ./deploy/lib:/usr/local/tomcat/lib # Driver JDBC PostgreSQL - ./deploy/jasperserver:/var/jasperserver # Marcador de instalação - ./deploy/keystore:/root # Keystore (.jrsksp) - - ./deploy/logs:/var/log # Logs + - ./deploy/logs:/var/log/jasperserver # Logs networks: - jasper-net diff --git a/downloads/download.sh b/downloads/download.sh index a8f6f47..06fd72f 100755 --- a/downloads/download.sh +++ b/downloads/download.sh @@ -8,7 +8,7 @@ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 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}" if [ -f "$DEST" ]; then diff --git a/entrypoint.sh b/entrypoint.sh index 6fdd506..19d5ca5 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -57,15 +57,17 @@ install_jasperserver() { # Executa o instalador CE no modo minimal (sem dados de exemplo) # 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]} + set -e if [ $INSTALL_RC -eq 0 ]; then mkdir -p "$(dirname "$INSTALL_MARKER")" touch "$INSTALL_MARKER" echo "✅ Instalação concluída com sucesso!" 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 fi } @@ -82,7 +84,13 @@ fi prepare_config 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 else echo "✅ JasperReports Server já instalado. Pulando instalação."