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.