This document describes changes to the JD Atina Microserver Docker deployment bundle (also referred to as jd-docker-files). It focuses on deployment and operational changes (Docker Compose, environment files, startup behavior).

JD Atina Microserver Docker Files Version 1.0.4, April 20, 2026

Changes in this Release

Release scope: * Docker deployment bundle: jd-docker-files * Recommended microserver image: 92455890/jd-atina-microserver:1.0.4

1. Added – Configurable JVM memory and OutOfMemory dump settings

The Docker deployment bundle now supports configuring JVM heap settings and automatic dump generation through environment variables. This makes it easier to adjust memory usage without changing the startup script and provides better diagnostics if an OutOfMemoryError happens again.

What changed
  • Added new JVM-related environment variables to the .env file.

  • Updated the startup script to read JVM settings from environment variables instead of using a hardcoded -Xmx2G.

  • Added support for automatic heap dump generation on OutOfMemoryError.

  • Added support for configurable JVM fatal error log output.

  • Added optional support for extra JVM options through a free-form variable.

New configuration

Add the following to your .env (or the --env-file you use with Docker Compose):

# JVM Memory Configuration
# -------------------------------------------
# Defines the JVM heap settings used by the microserver.
#
JDE_JAVA_XMS=2G
JDE_JAVA_XMX=4G
#
# Enables automatic heap dump generation on OutOfMemoryError.
#
JDE_JAVA_HEAP_DUMP_ON_OOM=true
#
# Directory where heap dumps will be written.
#
JDE_JAVA_HEAP_DUMP_PATH=/tmp/jvm-dumps
#
# JVM fatal error log file.
#
JDE_JAVA_ERROR_FILE=/tmp/jvm-dumps/hs_err_pid%p.log
#
# Optional extra JVM arguments.
#
JDE_JAVA_EXTRA_OPTS=
# -------------------------------------------

Update docker-compose.yml to expose the variables to the container:

services:
  jd-atina-microserver:
    environment:
      JDE_JAVA_XMS: ${JDE_JAVA_XMS}
      JDE_JAVA_XMX: ${JDE_JAVA_XMX}
      JDE_JAVA_HEAP_DUMP_ON_OOM: ${JDE_JAVA_HEAP_DUMP_ON_OOM}
      JDE_JAVA_HEAP_DUMP_PATH: ${JDE_JAVA_HEAP_DUMP_PATH}
      JDE_JAVA_ERROR_FILE: ${JDE_JAVA_ERROR_FILE}
      JDE_JAVA_EXTRA_OPTS: ${JDE_JAVA_EXTRA_OPTS}

How to update the Docker image version

When upgrading to a new Docker deployment bundle version, update the microserver image tag in docker-compose.yml.

For example, change:

services:
  jd-atina-microserver:
    image: 92455890/jd-atina-microserver:1.0.3

to:

services:
  jd-atina-microserver:
    image: 92455890/jd-atina-microserver:1.0.4

After updating the image tag, recreate the container:

docker compose --env-file .env up -d --force-recreate
Notes
  • The previous hardcoded JVM heap setting (-Xmx2G) has been replaced by configurable environment variables.

  • JDE_JAVA_XMS=2G and JDE_JAVA_XMX=4G are the recommended initial settings.

  • If JDE_JAVA_HEAP_DUMP_ON_OOM=true, the JVM will automatically write a heap dump when an OutOfMemoryError occurs.

  • JDE_JAVA_EXTRA_OPTS can be used for additional JVM arguments when needed.

  • It is recommended to use a mounted volume for JDE_JAVA_HEAP_DUMP_PATH so dump files are preserved across container recreation.

  • Make sure the image tag matches the Docker deployment bundle version you are installing.

JD Atina Microserver Docker Files Version 1.0.3, April 7, 2026

Changes in this Release

Release scope: * Docker deployment bundle: jd-docker-files * Recommended microserver image: 92455890/jd-atina-microserver:1.0.3

1. Added – UBE submission user mode configuration

A new environment variable was added to control which user context is used when submitting UBE jobs from the microserver.

What changed
  • Added a new .env property:

    • SUBMIT_UBE_USER_LOGGED

  • Added the corresponding variable in docker-compose.yml under the container environment: section.

  • This allows customers to explicitly choose between:

    • using the logged-in user context

    • using the security/bootstrap user context

New configuration

Add the following to your .env (or the --env-file you use with Docker Compose):

# UBE Submission User Configuration
# -------------------------------------------
# Defines which user context is used when submitting UBE jobs.
#
# true  → Uses the logged-in user (recommended and default behavior)
# false → Uses the security/bootstrap user (legacy behavior)
#
# If not defined, the system defaults to "true".
#
SUBMIT_UBE_USER_LOGGED=true
# -------------------------------------------

Update docker-compose.yml to expose the variable to the container:

services:
  jd-atina-microserver:
    environment:
      SUBMIT_UBE_USER_LOGGED: ${SUBMIT_UBE_USER_LOGGED}
Notes
  • SUBMIT_UBE_USER_LOGGED=true is the recommended setting.

  • SUBMIT_UBE_USER_LOGGED=false preserves the legacy behavior by using the security/bootstrap user for UBE submission.

  • If the variable is not explicitly defined, the system defaults to true.

JD Atina Microserver Docker Files Version 1.0.1, April 1, 2026

Version 1.0.1 Fixed in this Release

Release scope: * Docker deployment bundle: jd-docker-files * Recommended microserver image: 92455890/jd-atina-microserver:1.0.1

1. Deployment simplification (Docker volumes instead of docker cp)

The microserver deployment flow has been simplified by replacing multiple docker cp steps with read-only Docker volume mounts. This makes deployments more reliable, reproducible, and compatible with container recreation (--force-recreate) without losing copied files.

What changed
  • Removed the need to copy files into the container before startup:

    • JDE environment folders (e.g., JDV920, JPS920)

    • JDE library JARs (e.g., jde-lib-wrapped-.jar, StdWebService-.jar, JDEAtinaOverrideServicesConstants-*.jar)

    • service-constants.properties

  • The container now reads these artifacts from host-mounted volumes at startup.

  • Customer-facing docker-compose.yml should use image: only (no build: section).

New configuration

Add the following to your .env (or the --env-file you use with Docker Compose):

JDE_LIBS_ROOT=/tmp/build_jde_libs

Update docker-compose.yml to mount the required files/folders:

services:
  jd-atina-microserver:
    volumes:
      - ${JDE_LIBS_ROOT}/JDV920:/tmp/jde/config/JDV920:ro
      - ${JDE_LIBS_ROOT}/JPS920:/tmp/jde/config/JPS920:ro

      - ${JDE_LIBS_ROOT}/jde-lib-wrapped-1.0.0.jar:/tmp/jde/jde-lib-wrapped-1.0.0.jar
      - ${JDE_LIBS_ROOT}/StdWebService-1.0.0.jar:/tmp/jde/StdWebService-1.0.0.jar
      - ${JDE_LIBS_ROOT}/JDEAtinaOverrideServicesConstants-1.0.0.jar:/tmp/jde/JDEAtinaOverrideServicesConstants-1.0.0.jar

      - ${JDE_LIBS_ROOT}/service-constants.properties:/var/jdeatinaserver/service-constants.properties:ro

New startup command

You can now start (or restart) the microserver with a single command:

docker-compose --env-file .env-linux up -d --force-recreate

Use the same docker-compose YAML and the same env file you used before — just add --force-recreate.

Notes

  • JDE_LIBS_ROOT is used by Docker Compose for path interpolation (e.g., in volumes:). It does not need to be added under the container environment: section unless your application explicitly requires it at runtime.

  • Ensure your env file contains only valid KEY=VALUE lines (remove any stray lines such as JDE-ALPHA-ENT without =).

  • Recommended improvement: use stable filenames (symlinks) for JAR mounts to avoid updating docker-compose.yml when versions change.


2. Added – Support for external /etc/hosts entries (file-based)

You can now inject multiple host mappings into the container’s /etc/hosts using a mounted file, instead of relying on a fixed set of environment variables.

This feature is useful when extra_hosts cannot be used (e.g., certain Azure networking constraints).

How it works

  • Mount a hosts file into the container at: /tmp/extra-hosts.txt

  • Set the environment variable: JDE_EXTRA_HOSTS_FILE=/tmp/extra-hosts.txt

  • At startup, the microserver reads the file and appends the entries to /etc/hosts.

Configuration example

docker-compose.yml:

services:
  jd-atina-microserver:
    volumes:
      - ${HOST_EXTRA_HOSTS_FILE}:/tmp/extra-hosts.txt:ro
    environment:
      JDE_EXTRA_HOSTS_FILE: /tmp/extra-hosts.txt

.env / .env-linux:

HOST_EXTRA_HOSTS_FILE=/absolute/path/to/extra-hosts.txt

extra-hosts.txt:

# IP            HOSTNAME
138.91.73.161   JDE-ALPHA-ENT
65.52.119.187   JDE-ALPHA-SQL
# END HOSTS

Notes

  • .env files are used by Docker Compose for variable interpolation, but variables are only available inside the container if explicitly listed under environment: (as shown above).

  • The hosts file must use Unix line endings (LF) (not Windows CRLF). Ensure it ends with # END HOSTS and a final newline.

  • This feature is useful when extra_hosts cannot be used (e.g., certain Azure networking constraints).