Domino-docker explained – Part 5 : Adding add-ons on top of your Domino image

In the previous parts, I explained how to create a Domino image and deploy it. But what if you want to add fix packs to your Domino image? Or Traveler, Volt or Verse? The scripts of the domino-docker project make this super simple. In this part, I’ll show you how to do this.

Adding fix packs and hot fixes

Let’s look at the case where you want to create an image of Domino 11.0.1 FP3. In part 2, we created a build.cfg file in the DominoDocker directory inside your home dir. This file contains the variables DOWNLOAD_FROM and SOFTWARE_DIR through which you define to either download the software from a web server or from a local directory. I have a directory per Domino version, so I change the SOFTWARE_DIR variable to point to my Domino 11 directory. When I then do a

cd /local/github/domino-docker
./build.sh -checkonly

I can see if I have all the files I need. If not, it shows me where to download them.

--- domino ---

10.0.1              [NA]  Domino_10.0.1_Linux64_English.tar  (CNXL9EN)
https://hclsoftware.flexnetoperations.com/flexnet/operationsportal/DownloadSearchPage.action?search=Domino_10.0.1_Linux64_English.tar+&resultType=Files&sortBy=eff_date&listButton=Search

10.0.1FP3           [NA]  Domino_10.0.1FP3_Linux64.tar  (-)
https://hclsoftware.flexnetoperations.com/flexnet/operationsportal/DownloadSearchPage.action?search=Domino_10.0.1FP3_Linux64.tar+&resultType=Files&sortBy=eff_date&listButton=Search

10.0.1FP4           [NA]  Domino_10.0.1FP4_Linux64.tar  (-)
https://hclsoftware.flexnetoperations.com/flexnet/operationsportal/DownloadSearchPage.action?search=Domino_10.0.1FP4_Linux64.tar+&resultType=Files&sortBy=eff_date&listButton=Search

11.0.1              [OK]  Domino_1101_Linux_English.tar  (-)
11.0.1FP2           [OK]  Domino_1101FP2_Linux.tar  (-)
11.0.1FP3           [OK]  Domino_1101FP3_Linux.tar  (-)
12.0.0              [NA]  Domino_12.0_Linux_English.tar  (-)
https://hclsoftware.flexnetoperations.com/flexnet/operationsportal/DownloadSearchPage.action?search=Domino_12.0_Linux_English.tar+&resultType=Files&sortBy=eff_date&listButton=Search

As you can see, all packages for Domino 11.0.1 FP3 are available. To build a package, we again use the build.sh script. If we run this script without other options, we get the usage info:

Usage: build.sh { domino | traveler | volt } version fp hf

-checkonly      checks without build
-verifyonly     checks download file checksum without build
-(no)check      checks if files exist (default: yes)
-(no)verify     checks downloaded file checksum (default: no)
-(no)url        shows all download URLs, even if file is downloaded (default: no)
-(no)linuxupd   updates container Linux  while building image (default: yes)
cfg|config      edits config file (either in current directory or if created in home dir)
cpcfg           copies standard config file to config directory (default: /root/DominoDocker/build.cfg)

Add-On options

-git            adds Git client to Domino image
-openssl        adds OpenSSL to Domino image
-borg           adds borg client and Domino Borg Backup integration to image
-verse          adds the latest verse version to a Domino image

So to build a Domino 11.0.1 FP3 image, all I have to do is run:

./build.sh domino 11.0.1 fp3

This builds a CentOS 8 container with Domino 11.0.1 FP3. On my server, it took 5 minutes and 2 seconds, but times are highly dependent on hardware of course. The usage information also shows what to do if you want to add a hotfix. You simple add the name of the hotfix to the command, so for example

./build.sh domino 11.0.1 fp3 hf1

If a hotfix is missing, you can add it yourself in the file /local/github/domino-docker/software/software.txt. You need both the filename and the sha256 hash. The latter you can calculate yourself with

sha256sum <filename>

Adding Traveler or Volt

Both the Traveler image and Volt image are based on a Domino image, so to build an image of Domino with Traveler or Volt, you need to build a Domino image first. The Traveler or Volt image will, by default, be build on the Domino image with the tag: hclcom/domino:latest. You can check which Domino image has this tag by using

docker/podman image ls

The way to build an image of the latest available Traveler image on the latest available Domino image is:

cd /local/github/domino-docker/    (assuming that's the location of your script directory)
./build.sh traveler

For Volt that would be:

./build.sh volt

If you want to create an image for a specific version of Traveler or Volt, you can do so the same way as you would for Domino, so for example

./build traveler 12.0.0 fp2

This will build an image based on the domino image tagged ‘latest’ with Traveler 12.0.0 FP2. If you also want to tag your Traveler image with latest, you can add this tag in your command so:

 ./build traveler 12.0.0 fp2 latest

So what if you have multiple Domino images, and you want to define on which specific image you want to build Domino? There’s an option for this as well:

 ./build traveler 12.0.0 fp2 -base=hclcom/domino:12.0.0

Please note: I’ve talked a lot with Daniel Nashed about these blog articles and this -base tag was one of the results of these talks. It’s currently only in the ‘develop’ branch of the domino-docker project. I expect that it will soon be in the master branch, but if you need this functionality and it’s not there, switch to the ‘develop’ branch.

Volt works the same way, though Volt doesn’t work with fixpacks. With mutliple Volt versions and Domino versions, this would be the way to build the latest available official Volt image at the time of writing this article on the latest available official Domino version:

./build.sh volt 1.0.4.10 -base hclcom/domino:12.0.0

Just to be clear, at the time of writing, the above command would do exactly the same as ./build.sh volt if Domino 12.0.0 is tagged ‘latest’.

As you might have guessed from the above commands, instead of a Domino base image, you could also build Volt on top of a Traveler image or vice versa. Though such an image is not at all recommended for production use, it does work.

Adding Verse

Daniel chose a different approach to add Verse to an image to make it even simpler to add Verse while creating a Domino image. For example, to add Verse to a Domino image based on Domino 12.0.0 which you want to tag as ‘latest’, you can use:

./build.sh domino 12.0.0 latest -verse

Just adding ‘-verse’ in your command will add the latest version of Verse to the image. If you want to specify an older version, you can use -verse=<version>, for example

./build.sh domino 12.0.0 latest -verse=2.1.0

What is regarded as the latest version can be found in the file /local/github/domino-docker/software/current_version.txt. If necessary, this is also the file which you can change to force a different version in case a version you want to install isn’t listed.

Borg Backup

Another option which can be added to the build command is -borg. Borg backup is an open-source backup solution which, in most major Linux distributions, can be installed from the default repositories. Domino V12 saw the introduction of the backup solution, which provides an integration point in Domino to work with backup solutions from different vendors and open-source backup solutions like Borg backup. To be able to use Borg Backup with your Domino container, Borg backup needs to be installed on the OS of the container, which is exactly what the -borg option does. Next to this, you also need to install Borg backup on the container host OS for the fuse driver, though just installing this fuse driver through dnf install -y python3-llfuse is probably sufficient.

To build a Domino 12.0 image with Verse and Borg backup, you could, for example, use this command:

./build.sh domino 12.0.0 latest -verse -borg

More about the integration of Borg backup with Domino V12 can be found in Daniel Nashed’s blog.

What about Sametime?

Next to Volt and Traveler, there’s another HCL product which uses Domino: Sametime. However, for its installation, Sametime needs something which is not available in an image: A configured Domino server. This prevents the possibility to install Sametime as part of a container image. HCL recently announced that future versions of Sametime will no longer use Domino as underlying platform, so this situation is unlikely to change, nor will it be a problem in the future.

Conclusion

In this article, I described how to add fix packs and hot fixes to your Domino container image and how to add Domino add-ons like Traveler, Volt and Verse. This has been made extremely easy with the scripts from the Domino Docker project, which allow you to install these fixes and add-ons in a single command. This again shows the wonderful flexibility you get with Domino containers. As a bonus, Daniel also made it easy to integrate Borg backup in your Domino image to use as a free backup solution. In the next part, I’ll describe how to make your own customisations to your Domino container image.