I’ve created the first in a set of videos about setting up Domino on Docker for development from Notes Client, XPages and Node.js / Node-RED. For me as a developer, the benefits of Docker I see include:
- Creating a container with data persisted in a volume. The volume can be exported, so developers can work in their own environments that are certain to be the same.
- Testing of different Domino versions easily by using that single persisted data volume, but attaching a container for a different version of Domino.
- Creating a demo or test environment for an application, by not using a persisted data volume. Instead, set up the container without the “-v” parameter, set up your environment as required, and create an image from it. Then, every time you create a new container from that demo image you have a fresh starting point.
- Creating separate Domino Docker containers that are configured for different servers (or for BPs different customers).
- Creating a sandboxed Domino Docker container for external applications to test against. Rather than giving access to a Domino server that has other content on it, spin up the sandboxed Docker container as and when required and use ngrok to provide a secure external tunnel to it.
I reference a few links in the video, and for ease of reference they are:
- https://tc-soft.com/blog/docker-pt1 – Tim Clark’s blog series on Docker and Domino
- https://www.slideshare.net/gabturtle/an-introduction-to-configuring-domino-for-docker – Gab Davis’s presentation on Domino and Docker from a couple of years ago
- https://github.com/klehmann/domino-docker-setup – Karsten’s github repo for Domino on Docker
- https://github.com/paulswithers/domino-docker-setup – My fork from Karsten’s repo
- https://github.com/IBM/domino-docker – the IBM repo for Domino on Docker that will likely become the official repo
The command I use to create the Docker container is docker run -it -p 8085:8085 -p 8354:1352 -p 8888:80 -p 8443:443 --name domino1001_appDevPack_tmp -v domino_data:/local/notesdata klehmann/domino:10.0.1-appdev
. This creates and runs the Docker container, mapping ports from my PC to the container using port 8085 for Proton’s gRPC, 8354 mapping to 1352 for nRPC, 8888 mapping to the HTTP port 80, 8443 mapping to the HTTPS port 443. The --name
defines a name that the container will be created with and is optional. The -v
parameter maps “/local/notesdata” which is the Domino data directory to a persisted volume, created previously. Finally, we define the Docker image to use.
Hi Paul,
Considering that performance best practices suggest using separate areas for different parts of the Domino data storage, i.e. separate areas for notes databases, the transaction log, the temp directory, the full text indexes, the temp directory, the DAOS directory.
And that ideally, those areas be backed by storage using separate physical paths to reduce contention (in fact, the point of the whole separation exercise).
Reading the docker manuals creating a volume using a union mount or OverlayFS or some such (time constraints aborted the parsing of docker documentation..) this should be possible.
Although I know this is docker implementation stuff, I think the example of how to configure a performant Domino server on docker would serve a purpose.