Loading...
Loading...
With this topic, you can download Docker images and launch instances in Mirth® Connect.
Docker images for Mirth® Connect 4.6.0 and later versions support both linux/amd64
and linux/arm64
architectures.
Log on to Mirth® Connect Command Center, navigate to the Docker Dashboard from the Main Side Menu, and follow the instructions for getting a token and pulling the desired image.
Quickly start Connect using embedded Derby database and all configuration defaults. At a minimum you will likely want to use the -p
option to expose the 8443 port so that you can login with the Administrator GUI or CLI:
docker run -p 8443:8443 -e
_MP_LICENSE_KEY='0000-00000000000-000000000-00000000x'
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images
You can also use the --name
option to give your container a unique name, and the -d
option to detach the container and run it in the background:
docker run --name myconnect -d -p 8443:8443 -e
_MP_LICENSE_KEY='0000-00000000000-000000000-00000000x'
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images
To run a specific version of Connect, specify a tag at the end:
docker run --name myconnect -d -p 8443:8443 -e
_MP_LICENSE_KEY='0000-00000000000-000000000-00000000x'
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images:3.9
To run using a specific architecture, specify it using the --platform
argument:
docker run --name myconnect -d -p 8443:8443 -e
_MP_LICENSE_KEY='0000-00000000000-000000000-00000000x' --platform linux/arm64
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images:4.4.0
Check the Environment Variables section for more available configuration options.
docker stack deploy
or docker-compose
With docker stack
or docker-compose
you can easily setup and launch multiple related containers. For example you might want to launch both Connect and a PostgreSQL database to run alongside it.
docker-compose -f stack.yml
up
Here's an example stack.yml
file you can use:
version: "3.1" services: mc: image: 770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images platform: linux/amd64 environment: - DATABASE=postgres - DATABASE_URL=jdbc:postgresql://db:5432/mirthdb - DATABASE_MAX_CONNECTIONS=20 - DATABASE_USERNAME=mirthdb - DATABASE_PASSWORD=mirthdb - DATABASE_MAX_RETRY=2 - DATABASE_RETRY_WAIT=10000 - KEYSTORE_STOREPASS=docker_storepass - KEYSTORE_KEYPASS=docker_keypass - _MP_LICENSE_KEY='0000-00000000000-000000000-00000000x' - VMOPTIONS=-Xmx512m ports: - 8080:8080/tcp - 8443:8443/tcp depends_on: - db db: image: postgres environment: - POSTGRES_USER=mirthdb - POSTGRES_PASSWORD=mirthdb - POSTGRES_DB=mirthdb expose: - 5432
Try it out with Play With Docker. Note that in order to access the 8080/8443 ports from your workstation, follow their guide to format the URL correctly. When you login via the Administrator GUI, use port 443 on the end instead of 8443.
You can use environment variables to configure the mirth.properties file or to add custom JVM options.
To set environment variables, use the -e
option for each variable on the command line:
docker run -e DATABASE='derby' -p 8443:8443
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images
You can also use a separate file containing all of your environment variables using the --env-file
option. For example let's say you create a file myenvfile.txt:
DATABASE=postgres DATABASE_URL=jdbc:postgresql://serverip:5432/mirthdb DATABASE_USERNAME=postgres DATABASE_PASSWORD=postgres DATABASE_MAX_RETRY=2 DATABASE_RETRY_WAIT=10000 KEYSTORE_STOREPASS=changeme KEYSTORE_KEYPASS=changeme _MP_LICENSE_KEY='0000-00000000000-000000000-00000000x' VMOPTIONS=-Xmx512m
docker run --env-file=myenvfile.txt -p 8443:8443
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images
DATABASE
The database type to use for the NextGen Connect Integration Engine backend database. Options:
derby
mysql
postgres
oracle
sqlserver
DATABASE_URL
The JDBC URL to use when connecting to the database. For example:
jdbc:postgresql://serverip:5432/mirthdb
DATABASE_USERNAME
The username to use when connecting to the database. If you don't want to use an environment variable to store sensitive information like this, look at the Using Docker Secrets section below.
DATABASE_PASSWORD
The password to use when connecting to the database. If you don't want to use an environment variable to store sensitive information like this, look at the Using Docker Secrets section below.
DATABASE_MAX_CONNECTIONS
The maximum number of connections to use for the internal messaging engine connection pool.
DATABASE_MAX_RETRY
On startup, if a database connection cannot be made for any reason, Connect will wait and attempt again this number of times. By default, will retry 2 times (so 3 total attempts).
DATABASE_RETRY_WAIT
The amount of time (in milliseconds) to wait between database connection attempts. By default, will wait 10 seconds between attempts.
KEYSTORE_STOREPASS
The password for the keystore file itself. If you don't want to use an environment variable to store sensitive information like this, look at the Using Docker Secrets section below.
KEYSTORE_KEYPASS
The password for the keys within the keystore, including the server certificate and the secret encryption key. If you don't want to use an environment variable to store sensitive information like this, look at the Using Docker Secrets section below.
KEYSTORE_TYPE
The type of keystore.
SESSION_STORE
If set to true, the web server sessions are stored in the database. This can be useful in situations where you have multiple Connect servers (connecting to the same database) clustered behind a load balancer.
VMOPTIONS
A comma-separated list of JVM command-line options to place in the .vmoptions
file. For example to set the max heap size:
-Xmx512m
DELAY
This tells the entrypoint script to wait for a certain amount of time (in seconds). The entrypoint script will automatically use a command-line SQL client to check connectivity and wait until the database is up before starting Connect, but only when using PostgreSQL or MySQL. If you are using Oracle or SQL Server and the database is being started up at the same time as Connect, you may want to use this option to tell Connect to wait a bit to allow the database time to startup.
KEYSTORE_DOWNLOAD
A URL location of a Connect keystore file. This file will be downloaded into the container and Connect will use it as its keystore.
EXTENSIONS_DOWNLOAD
A URL location of a zip file containing Connect extension zip files. The extensions will be installed on the Connect server.
CUSTOM_JARS_DOWNLOAD
A URL location of a zip file containing JAR files. The JAR files will be installed into the server-launcher-lib
folder on the Connect server, so they will be added to the server's classpath.
ALLOW_INSECURE
Allow insecure SSL connections when downloading files during startup. This applies to keystore downloads, plugin downloads, and server library downloads. By default, insecure connections are disabled but you can enable this option by setting ALLOW_INSECURE=true
.
SERVER_ID
Set the server.id
to a specific value. Use this to preserve or set the server ID across restarts and deployments. Using the env-var is preferred over storing appdata
persistently
Other options in the mirth.properties file can also be changed. Any environment variable starting with the _MP_
prefix will set the corresponding value in mirth.properties. Replace .
with a single underscore _
and -
with two underscores __
.
Examples:
Set the server TLS protocols to only allow TLSv1.2 and 1.3:
In the mirth.properties file:
https.server.protocols = TLSv1.3,TLSv1.2
As a Docker environment variable:
_MP_HTTPS_SERVER_PROTOCOLS='TLSv1.3,TLSv1.2'
Set the max connections for the read-only database connection pool:
In the mirth.properties file:
database-readonly.max-connections = 20
As a Docker environment variable:
_MP_DATABASE__READONLY_MAX__CONNECTIONS='20'
Set the REQUIRED license key:
In the mirth.properties file:
license.key = 0000-00000000000-000000000-00000000x
As a Docker environment variable:
_MP_LICENSE_KEY='0000-00000000000-000000000-00000000x'
For sensitive information such as the database/keystore credentials, instead of supplying them as environment variables you can use a Docker Secret. There are two secret names this image supports:
If present, any properties in this secret will be merged into the mirth.properties file.
If present, any JVM options in this secret will be appended onto the mcserver.vmoptions file.
Secrets are supported with Docker Swarm, but you can also use them with docker-compose
.
For example let's say you wanted to set keystore.storepass
and keystore.keypass
in a secure way. You could create a new file, secret.properties:
keystore.storepass=changeme keystore.keypass=changeme
Then in your YAML docker-compose stack file:
version: '3.1' services: mc: image: 770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images environment: - _MP_LICENSE_KEY='0000-00000000000-000000000-00000000x' - VMOPTIONS=-Xmx512m secrets: - mirth_properties ports: - 8080:8080/tcp - 8443:8443/tcp secrets: mirth_properties: file: /local/path/to/secret.properties
The secrets section at the bottom specifies the local file location for each secret. Change /local/path/to/secret.properties
to the correct local path and filename.
Inside the configuration for the Connect container there is also a secrets section that lists the secrets you want to include for that container.
The appdata folder
The application data directory (appdata) stores configuration files and temporary data created by Connect after starting up. This usually includes the keystore file and the server.id
file that stores your server ID. If you are launching Connect as part of a stack/swarm, it's possible the container filesystem is already being preserved. But if not, you may want to consider mounting a volume to preserve the appdata folder.
docker run -v /local/path/to/appdata:/opt/connect/appdata -p
8443:8443 -e _MP_LICENSE_KEY='0000-00000000000-000000000-00000000x'
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images
The -v
option makes a local directory from your filesystem available to the Docker container. Create a folder on your local filesystem, then change the /local/path/to/appdata
part in the example above to the correct local path.
You can also configure volumes as part of your docker-compose YAML stack file:
version: '3.1' services: mc: image: 770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images environment: - _MP_LICENSE_KEY='0000-00000000000-000000000-00000000x' volumes: -
~/Documents/appdata:/opt/connect/appdata
The entrypoint script will automatically look for any ZIP files in the /opt/connect/custom-extensions
folder and unzip them into the extensions folder before Connect starts up. So to launch Connect with any additional extensions not included in the base application, do this:
docker run -v /local/path/to/custom-extensions:/opt/connect/custom-extensions -p
8443:8443 -e _MP_LICENSE_KEY='0000-00000000000-000000000-00000000x'
770034325221.dkr.ecr.us-east-2.amazonaws.com/mc/prod/docker-images
Create a folder on your local filesystem containing the ZIP files for your additional extensions. Then change the /local/path/to/custom-extensions
part in the example above to the correct local path.
As with the appdata example, you can also configure this volume as part of your docker-compose YAML file.
Currently, only the Debian flavored images support the newest authentication scheme in MySQL 8. All others (the Alpine based images) will need the following to force the MySQL database container to start using the old authentication scheme:
command:
--default-authentication-plugin=mysql_native_password
Example:
db: image: mysql command: --default-authentication-plugin=mysql_native_password environment: ...
The Dockerfiles, entrypoint script, and any other files used to build these Docker images are Copyright © NextGen Healthcare. You can find a copy of the Mirth® Connect license in server/docs/LICENSE.txt. All licensing information regarding third-party libraries is located in the server/docs/thirdparty folder.