Docker¶
Docker Compose under docker/ runs the current Report Server. The command below builds the image on the machine where you run it. This repository's GitHub Actions do not publish that image.
From the repository:
cd docker
cp .env.example .env
# set JRS_DB_PASS and JRS_ADMIN_PASSWORD
docker compose up -d --build
Open http://127.0.0.1:9088/. The packaged base path is /. JRS_HOST_PORT changes the published host port (default 9088).
The default admin user is JRS_ADMIN_USER (default admin). The password is JRS_ADMIN_PASSWORD.
Compose tags the local image acugis-report-server:local unless REPORT_SERVER_IMAGE is set. Set REPORT_SERVER_IMAGE only when you already have an image to run. Do not assume a registry tag exists.
Architecture¶
One report-server container runs the Go application and Tomcat 10 with the JasperReports WAR. PostgreSQL and a scheduler container are separate services.
Internet / LAN
|
v
report-server :9088 (Go UI/API, published on the host)
|
+--> Tomcat 10 :8080 (Compose network only)
|
+--> postgres :5432 (Compose network, or your own PostgreSQL)
|
report-scheduler (jrs-schedule-dispatcher -> jrs-run-schedule)
|
+--> postgres
+--> http://report-server:8080/report
| Component | In this Compose file |
|---|---|
| Go Report Server | jrs-server, host port 9088 |
| Tomcat / Jasper | Tomcat 10 inside report-server, port 8080, not published |
| PostgreSQL | PostgreSQL 16 — image version is pinned in docker/compose.yml and is not published to a host port |
| Scheduler | report-scheduler, health port 9089, not published |
| Java | 17 |
The image is built from docker/report-server/Dockerfile. Exact patch versions are pinned in that Dockerfile and in docker/compose.yml. See docker/README.md.
Jasper URL¶
| Process | JRS_JASPER_INTERNAL_REPORT_URL |
|---|---|
report-server |
http://127.0.0.1:8080/report |
report-scheduler |
http://report-server:8080/report |
Port 9099 is the Go process fallback when that variable is unset. Compose sets 8080. Do not point a Compose deployment at 9099.
Inside the report-server container the Go process listens on 0.0.0.0:9088. The host reaches it through the published port.
Edition¶
BUILD_EDITION defaults to professional in docker/compose.yml. Set BUILD_EDITION=oss before --build for the Open Source image. An Open Source image does not compile Professional modules. A Professional image without a valid license still includes Data Explorer and embedded QGIS. Map Reports, dashboards, Dataset Intelligence, MCP, and the other license-gated modules stay off until a license is valid. ACUGIS_EDITION is not a license. See the compatibility matrix.
Scheduling¶
Scheduled reports are handled by the report-scheduler service. No host cron or systemd timers are required, and you should not invoke the scheduler by hand.
The scheduler runs jrs-schedule-dispatcher, which polls due schedules and executes jrs-run-schedule <schedule_id>.
| Variable | Purpose |
|---|---|
JRS_DB_* |
Same application database as report-server |
JRS_SMTP_* |
Scheduled email |
TZ |
IANA timezone for calendar and once times, on both services (default UTC) |
JRS_SCHEDULER_POLL_INTERVAL |
Poll interval (default 15s) |
Per-schedule logs on the shared volume:
Native installs keep using systemd timers. They do not use this service.
Optional QGIS Server¶
QGIS Server is not in the default stack. Native installs do not install it.
Copy QGIS Desktop .qgz / .qgs files into docker/qgis/projects/ and file datasources into docker/qgis/data/. Designer uses http://127.0.0.1:9088/qgis/ (or https://<host>/qgis/ behind your proxy). Do not publish the QGIS container port. See docker/qgis/README.md.
External PostgreSQL¶
Set JRS_DB_HOST, JRS_DB_PORT, JRS_DB_NAME, JRS_DB_USER, and JRS_DB_PASS, then remove or disable the postgres service. docker/compose.external-postgres.example.yml is an example of that override. Keep the same report-server and report-scheduler image.
Useful commands¶
docker compose logs -f report-server
curl -sS http://127.0.0.1:9088/health
curl -sS http://127.0.0.1:9088/ready
docker compose down
docker compose down -v deletes the Compose volumes.
Related¶
- Installation
- Deployment
- Configuration
- Repository guide:
docker/README.md