├── docker-compose.yml ├── Dockerfile ├── entrypoint.sh └── README.md /docker-compose.yml: -------------------------------------------------------------------------------- 1 | jasperserver-db-storage: 2 | image: busybox:latest 3 | volumes: 4 | - /var/lib/mysql 5 | 6 | jasperserver-db: 7 | image: zabbix/zabbix-db-mariadb 8 | volumes: 9 | - /etc/localtime:/etc/localtime:ro 10 | volumes_from: 11 | - jasperserver-db-storage 12 | environment: 13 | - MARIADB_USER=jasper 14 | - MARIADB_PASS=my_password 15 | 16 | jasperserver: 17 | image: monitoringartist/jasperserver-xxl:latest 18 | ports: 19 | - "8080:8080" 20 | volumes: 21 | - /etc/localtime:/etc/localtime:ro 22 | links: 23 | - jasperserver-db:jasper.db 24 | environment: 25 | - JS_DB_HOST=jasper.db 26 | - JS_DB_USER=jasper 27 | - JS_DB_PASSWORD=my_password 28 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM tomcat:7 2 | MAINTAINER Jan Garaj info@monitoringartist.com 3 | 4 | ENV \ 5 | JS_VERSION=6.3.0 \ 6 | JS_Xmx=512m \ 7 | JS_MaxPermSize=256m \ 8 | JS_CATALINA_OPTS="-XX:+UseBiasedLocking -XX:BiasedLockingStartupDelay=0 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:+UseCompressedOops -XX:+UseCMSInitiatingOccupancyOnly" \ 9 | JS_DB_TYPE=mysql \ 10 | JS_DB_HOST=jasper.db \ 11 | JS_DB_PORT=3306 \ 12 | JS_DB_USER=jasper \ 13 | JS_DB_PASSWORD=my_password \ 14 | JASPERSERVER_HOME=/jasperserver \ 15 | JASPERSERVER_BUILD=/jasperserver/buildomatic 16 | 17 | COPY entrypoint.sh / 18 | 19 | RUN \ 20 | apt-get update && \ 21 | apt-get install -y vim netcat unzip && \ 22 | curl -SL http://sourceforge.net/projects/jasperserver/files/JasperServer/JasperReports%20Server%20Community%20Edition%20${JS_VERSION}/jasperreports-server-cp-${JS_VERSION}-bin.zip -o /tmp/jasperserver.zip && \ 23 | unzip /tmp/jasperserver.zip -d $JASPERSERVER_HOME && \ 24 | mv -v $JASPERSERVER_HOME/jasperreports-server-cp-${JS_VERSION}-bin/* $JASPERSERVER_HOME && \ 25 | chmod +x /entrypoint.sh && \ 26 | rm -rf $JASPERSERVER_HOME/jasperreports-server-cp-${JS_VERSION}-bin && \ 27 | rm -rf /tmp/* && \ 28 | rm -rf /var/lib/apt/lists/* 29 | 30 | ENTRYPOINT ["/entrypoint.sh"] 31 | 32 | CMD ["run"] 33 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | setup_jasperserver() { 5 | JS_DB_TYPE=${JS_DB_TYPE:-mysql} 6 | # Allow either postgres or postgresql 7 | [ "$JS_DB_TYPE" = "postgres" ] && JS_DB_TYPE=postgresql 8 | JS_DB_HOST=${JS_DB_HOST:-jasper.db} 9 | JS_DB_USER=${JS_DB_USER:-jasper} 10 | JS_DB_PASSWORD=${JS_DB_PASSWORD:-my_password} 11 | # Choose the correct default port 12 | dfl=3306 13 | [ "$JS_DB_TYPE" = "postgresql" ] && dfl=5432 14 | JS_DB_PORT=${JS_DB_PORT:-$dfl} 15 | JS_ENABLE_SAVE_TO_HOST_FS=${JS_ENABLE_SAVE_TO_HOST_FS:-false} 16 | pushd ${JASPERSERVER_BUILD} 17 | cp sample_conf/${JS_DB_TYPE}_master.properties default_master.properties 18 | sed -i -e "s|^appServerDir.*$|appServerDir = $CATALINA_HOME|g; s|^dbHost.*$|dbHost=$JS_DB_HOST|g; s|^dbUsername.*$|dbUsername=$JS_DB_USER|g; s|^dbPassword.*$|dbPassword=$JS_DB_PASSWORD|g" default_master.properties 19 | 20 | JS_MAIL_HOST=${JS_MAIL_HOST:-mail.example.com} 21 | JS_MAIL_PORT=${JS_MAIL_PORT:-25} 22 | JS_MAIL_PROTOCOL=${JS_MAIL_PROTOCOL:-smtp} 23 | JS_MAIL_USERNAME=${JS_MAIL_USERNAME:-admin} 24 | JS_MAIL_PASSWORD=${JS_MAIL_PASSWORD:-password} 25 | JS_MAIL_SENDER=${JS_MAIL_SENDER:-admin@example.com} 26 | JS_WEB_DEPLOYMENT_URI=${JS_WEB_DEPLOYMENT_URI:-http://localhost:8080/jasperserver} 27 | 28 | sed -i -e "s|^# quartz\.mail\.sender\.host.*$|quartz.mail.sender.host = $JS_MAIL_HOST|g; s|^# quartz\.mail\.sender\.port.*$|quartz.mail.sender.port = $JS_MAIL_PORT|g; s|^# quartz\.mail\.sender\.protocol.*$|quartz.mail.sender.protocol = $JS_MAIL_PROTOCOL|g; s|^# quartz\.mail\.sender\.username.*$|quartz.mail.sender.username = $JS_MAIL_USERNAME|g; s|^# quartz\.mail\.sender\.password.*$|quartz.mail.sender.username = $JS_MAIL_PASSWORD|g; s|^# quartz\.mail\.sender\.from.*$|quartz.mail.sender.from = $JS_MAIL_SENDER|g; s|^# quartz\.web\.deployment\.uri.*$|quartz.web.deployment.uri = $JS_WEB_DEPLOYMENT_URI|g" default_master.properties 29 | 30 | # DB seeding 31 | ./js-ant create-js-db init-js-db-ce import-minimal-ce || true 32 | for i in $@; do 33 | ./js-ant $i 34 | done 35 | 36 | if [ "${JS_ENABLE_SAVE_TO_HOST_FS}" = "true" ]; then 37 | # Change the value of enableSaveToHostFS to true 38 | sed -i "s/\(\)/\1${JS_ENABLE_SAVE_TO_HOST_FS}\2/" /usr/local/tomcat/webapps/jasperserver/WEB-INF/applicationContext.xml 39 | fi 40 | 41 | popd 42 | } 43 | 44 | run_jasperserver() { 45 | if [ ! -d "$CATALINA_HOME/webapps/jasperserver" ]; then 46 | setup_jasperserver deploy-webapp-ce 47 | fi 48 | 49 | catalina.sh run 50 | } 51 | 52 | function wait_db() { 53 | echo -n "-----> waiting for database on $JS_DB_HOST:$JS_DB_PORT ..." 54 | while ! nc -w 1 $JS_DB_HOST $JS_DB_PORT 2>/dev/null 55 | do 56 | echo -n . 57 | sleep 1 58 | done 59 | 60 | echo '[OK]' 61 | } 62 | 63 | export CATALINA_OPTS="-Xmx${JS_Xmx} -XX:MaxPermSize=${JS_MaxPermSize} ${JS_CATALINA_OPTS}" 64 | case "$1" in 65 | run) 66 | shift 1 67 | run_jasperserver "$@" 68 | ;; 69 | *) 70 | exec "$@" 71 | esac 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [Managed by Monitoring Artist: DevOps / Docker / Kubernetes / AWS ECS / Zabbix / Zenoss / Terraform / Monitoring](http://www.monitoringartist.com 'DevOps / Docker / Kubernetes / AWS ECS / Zabbix / Zenoss / Terraform / Monitoring') 2 | 3 | # Jasper Server 4 | 5 | ![Unsupported](https://img.shields.io/badge/development_status-unsupported-red.svg) [![DockerHub pulls](https://img.shields.io/docker/pulls/monitoringartist/jasperserver-xxl.svg?style=plastic&label=DockerHub%20Pulls)](https://img.shields.io/docker/pulls/monitoringartist/jasperserver-xxl.svg) [![DockerHub stars](https://img.shields.io/docker/stars/monitoringartist/jasperserver-xxl.svg?style=plastic&label=DockerHub%20Stars)](https://img.shields.io/docker/pulls/monitoringartist/jasperserver-xxl.svg) 6 | 7 | Please use official project https://github.com/TIBCOSoftware/js-docker. If you want to maintain this repository, please contact me. 8 | 9 | Dockerized [TIBCO JasperReports Server Community Edition](http://community.jaspersoft.com/download). Quick start: 10 | 11 | ``` 12 | # Start persistent container storage for database 13 | docker run -d -v /var/lib/mysql --name jasperserver-db-storage busybox:latest 14 | 15 | # Start database - MariaDB (note: no Zabbix data are included in the Docker image) 16 | docker run \ 17 | --name jasperserver-db \ 18 | -v /etc/localtime:/etc/localtime:ro \ 19 | --volumes-from jasperserver-db-storage \ 20 | --env="MARIADB_USER=jasper" \ 21 | --env="MARIADB_PASS=my_password" \ 22 | -d monitoringartist/zabbix-db-mariadb:latest 23 | 24 | # Start JasperServer 25 | docker run \ 26 | --name jasperserver \ 27 | -p 8080:8080 \ 28 | -v /etc/localtime:/etc/localtime:ro \ 29 | --link jasperserver-db:jasper.db \ 30 | --env="JS_DB_HOST=jasper.db" \ 31 | --env="JS_DB_USER=jasper" \ 32 | --env="JS_DB_PASSWORD=my_password" \ 33 | -d monitoringartist/jasperserver-xxl:latest 34 | 35 | # Starting and autodeployment can take 5-7 minutes, be patient 36 | # You can watch progres and issues in logs 37 | docker logs -f jasperserver 38 | ``` 39 | 40 | JasperServer will be available on URL `http://:8080/jasperserver`. 41 | Default credentials `jasperadmin/jasperadmin`. 42 | 43 | Please donate to author, so he can continue to publish other awesome projects 44 | for free: 45 | 46 | [![Paypal donate button](http://jangaraj.com/img/github-donate-button02.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8LB6J222WRUZ4) 47 | 48 | # Configuration 49 | 50 | Create a user in your database. The container will create the database if it 51 | does not alrady exist. For PostgreSQL, the user must have the CREATEDB 52 | permission: `ALTER USER jasper CREATEDB`. 53 | 54 | You can use environment variables to configure JasperServer container: 55 | 56 | | Environment variable | Default value | Note | 57 | | -------------------- | ------------- | ----- | 58 | | JS_DB_TYPE | mysql, postgresql | | 59 | | JS_DB_HOST | jasper.db | | 60 | | JS_DB_PORT | mysql: 3306, postgres: 5432 | | 61 | | JS_DB_USER | jasper | | 62 | | JS_DB_PASSWORD | my_password | | 63 | | JS_Xmx | 512m | | 64 | | JS_MaxPermSize | 256m | | 65 | | JS_CATALINA_OPTS | -XX:+UseBiasedLocking -XX:BiasedLockingStartupDelay=0 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:+UseCompressedOops -XX:+UseCMSInitiatingOccupancyOnly | | 66 | | JS_ENABLE_SAVE_TO_HOST_FS | false | This enable the scheduled reports to be saved in the host | 67 | | JS_MAIL_HOST | mail.example.com | | 68 | | JS_MAIL_PORT | 25 | | 69 | | JS_MAIL_PROTOCOL | smtp | | 70 | | JS_MAIL_USERNAME | admin | | 71 | | JS_MAIL_PASSWORD | password | | 72 | | JS_MAIL_SENDER | admin@example.com | | 73 | | JS_WEB_DEPLOYMENT_URI | http://localhost:8080/jasperserver | | 74 | 75 | # Integrations 76 | 77 | * [docker-compose for dockerized jasperserver-xxl](https://github.com/monitoringartist/jasperserver-xxl/blob/master/docker-compose.yml) 78 | 79 | # Author 80 | 81 | [Devops Monitoring Expert](http://www.jangaraj.com 'DevOps / Docker / Kubernetes / AWS ECS / Google GCP / Zabbix / Zenoss / Terraform / Monitoring'), 82 | who loves monitoring systems and cutting/bleeding edge technologies: Docker, 83 | Kubernetes, ECS, AWS, Google GCP, Terraform, Lambda, Zabbix, Grafana, Elasticsearch, 84 | Kibana, Prometheus, Sysdig, ... 85 | 86 | Summary: 87 | * 1000+ [GitHub](https://github.com/monitoringartist/) stars 88 | * 6000+ [Grafana dashboard](https://grafana.net/monitoringartist) downloads 89 | * 800 000+ [Docker image](https://hub.docker.com/u/monitoringartist/) pulls 90 | 91 | Professional devops / monitoring / consulting services: 92 | 93 | [![Monitoring Artist](http://monitoringartist.com/img/github-monitoring-artist-logo.jpg)](http://www.monitoringartist.com 'DevOps / Docker / Kubernetes / AWS ECS / Google GCP / Zabbix / Zenoss / Terraform / Monitoring') 94 | --------------------------------------------------------------------------------