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. The command in that case would be:
./build.sh volt -base=hclcom/traveler:latest
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.
FYI – There is a silent installation option for the Sametime Community server using a response file. See https://help.hcltechsw.com/sametime/11.6/admin/installing_sametime_community_linux.html
The challenge here is, that you need to have a properly configured Domino server as a base before you can run the Sametime Community server installation.
Thanks for the addition, Erik. You’re of course completely correct. The problem with Sametime is not the missing silent install option, but the fact that you can’t have a configured Domino server inside an image. I’ll fix that in the article.
Enjoying this series, and looking forward to the next post.
Thanks for sharing with the Notes/Domino community.
Eric
Hi Martijn, do you know if it will be possible to create a Docker Container with Volt and Traveler ?
Thanks
Kevin
Hi Kevin. Absolutely! My personal image is an image that contains both. I was convinced that I covered that in my blog series, but apparently I didn’t. I should make that more clear.
The trick is in the -from= switch. Just create an image with either Traveler or Volt. I always do Traveler first, but that’s arbitrary. Then the command to add Volt is:
./build.sh volt -from=localhost/hclcom/traveler:latest
That’s all there is to it.
Thanks for your quick respone. I get the following error:
Starting Docker container: hclsoftware
Hosting HCL Software repository on http://172.17.0.3
Building Image :
Sending build context to Docker daemon 337.9kB
Step 1/36 : ARG BASE_IMAGE=
Step 2/36 : FROM $BASE_IMAGE
error parsing HTTP 404 response body: invalid character ‘<' looking for beginning of value: "Unable to Process RequestHttp Status Code: 404Reason: File not found or unable to read file”
docker image ls says:
REPOSITORY TAG IMAGE ID CREATED SIZE
hclcom/traveler 12.0.1FP2 a2e2df56ccfd 5 minutes ago 2.07GB
hclcom/traveler latest a2e2df56ccfd 5 minutes ago 2.07GB
What is your build command? Seeing that your image doesn’t list localhost/ you should leave that out of the build command that I gave earlier. ‘:latest’ is optional.
./build.sh volt -from=hclcom/traveler