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/

Graceful stop

The container can be stopped gracefully by calling the docker-pre-stop-print script. This script will trigger a graceful stop, by stopping starting new jobs and waiting for the current jobs to finish.

In Kubernetes you can set it as a preStop hook


  lifecycle:
    preStop:
      exec:
        command:
          - /usr/local/tomcat/bin/docker-pre-stop-print
          - $(PRINT_TERMINATION_GRACE_PERIOD_SECONDS)