Docker

Image

Docker Hub contains a repository with images that can be used.

You can mount your print apps in /usr/local/tomcat/webapps/ROOT/print-apps.

You can mount additional font in core/docker/usr/share/fonts/truetype/[font-file], and verity that she is correctly installed by opening the view [base URL]/print/fonts.

Tunings

The docker image can be tuned with several environment variables:

  • CATALINA_OPTS: Java startup parameters.
  • DEFAULT_LOG_LEVEL: Set the default log level (defaults to INFO)
  • TOMCAT_LOG_LEVEL: Set the tomcat log level (defaults to INFO)
  • LOG_LEVEL: Set the mapfish print log level (defaults to INFO)
  • SPRING_LOG_LEVEL: Set the Spring log level (defaults to WARN)
  • JASPER_LOG_LEVEL: Set the JasperReports log level (defaults to WARN)
  • APACHE_LOG_LEVEL: Set the Apache log level (defaults to WARN)
  • SQL_LOG_LEVEL: Set the SQL (Hibernate) log level (defaults to WARN)
  • SENTRY_LOG_LEVEL: Set the Sentry log level (defaults to ERROR)
  • SENTRY_REPORTING_LOG_LEVEL: Starting from what log level to report to Sentry (defaults to WARN)
  • TOMCAT_LOG_TYPE:
    • classic (default): The logs are human readable. Access logs are going to stdout and the other logs are going to stderr.
    • json: The logs will be formatted in a JSON suitable for logstash. Access logs are going to stdout and the other logs are going to stderr.
    • logstash: The logs will be formatted in a JSON suitable for logstash (@cee) and sent by syslog/UDP. The access logs are going to stdout in json format. More variables are available for this mode:
      • TOMCAT_LOG_HOST: the target host
      • TOMCAT_LOG_PORT: the target port
  • EXTRA_JARS: If set, directory where extra JAR files are taken from. Can be used, for example, to add fonts.
  • PRINT_YAML_MAX_ALIASES: Set the YAML max alias, see also (defaults to 50).

If you want to tune properties from mapfish-spring.properties You can override them by adding -D options to the CATALINA_OPTS environment variable.

Sentry integration

You can enable Sentry crash reports by adding a parameter to the CATALINA_OPTS environment variable with the DSN provided by sentry: -Dsentry.dsn=https://public:private@host:port/project_id

Other parameters are documented here: https://docs.sentry.io/clients/java/config/

Multi-instance

In this mode several instances of the print will collaborate together to handle the print jobs. The state is stored in a database. You need to add the following parameters to CATALINA_OPTS:

  • -Ddb.username=...: The PostgresQL username
  • -Ddb.password=...: The PostgresQL password
  • -Ddb.host=...: The PostgresQL host name
  • -Ddb.name=...: The PostgresQL database name
  • -Ddb.port=...: The PostgresQL database port (defaults to 5432)

Example:

docker run --name=mapfish-print-test --publish=8080:8080
--env=TOMCAT_LOG_TYPE=json
--env=CATALINA_OPTS="-Ddb.name=mydb -Ddb.host=myserver -Ddb.username=myuser -Ddb.password=mypwd -Ddb.port=5432"
mydockerhub/mapfish-print:latest
        

The necessary tables are created automatically (print_accountings, print_job_results, print_job_statuses). In this mode the container will wait for the database to be reachable before actually starting the tomcat server.

The DB polling can be tuned with those two environment variables:

  • PRINT_CANCEL_OLD_POLL_INTERVAL: How often in seconds the DB is polled for jobs to be cancelled (default=60s)
  • PRINT_POLL_INTERVAL: How often in seconds the DB is polled for new jobs (default=0.5s)