Domino on Linux/Unix, Troubleshooting, Best Practices, Tips and more ...

 
alt

Daniel Nashed

 

Domino on Docker Project Updates

Daniel Nashed  23 July 2019 12:33:20

Thomas and me are working on the Domino on Docker project which has been around for a while. We are constantly updating it with more functionality.
Beside the main functionality of providing an automated installation we have a management script that can help to build custom Domino docker images for (e.g.) including applications.
We are working on making the resulting image more flexible. The first version allowed only to automatically setup a first server in a new Domain, but customers already have an environment and either want to setup an additional server in an existing domain or at least have a cross certified environment.


Whats new:

1. Additional server setup

You can now specify an existing server.id and existing server to get the system databases from. You still need to register the second server.id manually in your Domino Directory, however the ID file does not need to be copied anymore.
Just specify the environment variable
ServerIDfile to point to a location (local or http/https) from where the server.id file can be downloaded and the container startup routine will take care of automatically setting up your second server.

2. Add your own data into a container at initial startup

The big challenge is how to bring in data into a new container automatically. Distributing server.id files, templates, or even full applications.

We looked at different approaches which included "Docker secrets", shared volumes and other options.
For improving flexibility we decided to use configurable http/https download links which can be used to download a server.id or an additional data-directory.zip which is automatically expanded at first server start.
This would be for example a way for business partners to deploy their software on top of the image. Or for a customer to deploy their applications or specific adoptions.
All you have to do is to specify an environment variable
CustomNotesdataZip (attention, case sensitive!) pointing to a zip file that will be downloaded and extracted into the container at runtime.

3. Scriptable configuration

Now that you have provided your own templates - how do you turn them into an application, how do you change ACLs, or server settings at run-time?

We have added a method to automatically configure a server based on a
config JSON file. This can be used to create databases, change groups, change server settings etc.
The configuration is applied before starting up the (new) Domino server for the first time and also allows to sign applications, change the ACL of databases.
...there is even more configuration options to come.


4. More flexible deployment options

In previews versions there was image specific data in the /local directory.
So we moved that data to a separate directory to optionally allow /local to be mapped to a volume instead of having multiple volumes for /local/notesdata, /local/translog and /local/daos.
Mounting /local to a single volume will work fine, but if you want to build a
high performance Domino server we are recommending to have separate volumes for those different parts. We even added directories for nif and ft to allow separate volumes for those parts as well.
The Docker volume mapping is comparable to creating mount points. It's about providing most flexibility with best practices in mind.


5. Preparation for new binary location

The project now now includes a new start script version 3.3.0 which is already prepared for changing the program directory default location ( /opt/ibm/domino ) with Domino 11.
The start script and all docker image script files have been prepared to support a different binary location in future. All places in the scripts use standard variables. And we will keep the LOTUS variable to point to the binary location.


Feedback & Future planning

One of the next features will be to allow cross certification with existing IDs. The certifier.id is currently staying on the first installed machine. So the idea is to cross certify a provided safe.id.
This is specially helpful to create test environments. A small servertask will take care of creating cross certifying a safe.id and adding it to the LocalDomainAdmin group.

Another idea is to integrate this functionality into the toolchain which sets up the server, we have not decided yet.
We are looking for your feedback so leave a comment with your suggestions for improvement or
create an issue in our domino-docker project
Comments

1Eric Mack  24.07.2019 6:35:11  Domino on Docker Project Updates

Thank you so much for your efforts!

Eric

2Marcus  26.07.2019 11:17:03  Domino on Docker Project Updates

very good .. looking for new

3Filip Navrátil  31.07.2019 20:46:10  Domino on Docker Project Updates

How do you update domino server running in a docker container. Would you just switch the image? What about system databases/templates that would normally be updated during standard update/upgrade. These would not be upgraded if you just switched the image as they are on a peristent volume.

4Marcus  02.08.2019 10:36:22  Domino on Docker Project Updates

It's the same question I have ..

How can I upgrade for example existing Domino 10 image to Domino 11 with new templates ?

Creating images are very easy and I like it to test different environments locally simply with starting and stopping containers ...

Thanks for that !

5Daniel Nashed  02.08.2019 22:13:37  Domino on Docker Project Updates

Template Update with Docker

There is a short documentation about how updates work and this had been a challenge (see link below). But let me explain in more detail..

We have to look into it again with Domino 11, because it might be installed in a different way.

And we also made changes to the install data part.

It's tricky but we have it covered.

When we started the "install-data directory" (data directory created during install) whas left in the original place /local/notesdata.

A normal installation with Docker would have copied the /local/notesdata to the volume if the volume was empty at first startup.

But this did not work with all Docker implementations. Some just used containerd but other management tools and there have been cases in the cloud.

So we changed the install data logic to create a tar file of install data and at first startup the tar is expanded into the volume to have a install data directory.

For updates we look into the updated install data for that FP.

Currently (and we have to recheck if the new installer in Domino 11 will do the same), a FP brings changed data directory information with it.

There is a directory called "opt/ibm/domino/notes/latest/linux/data1_bck" which contains the changed template data etc.

During start of a container we check the versions and copy the files accordingly.

We have a short documentation about it here:

https://github.com/IBM/domino-docker/blob/master/documentation/concept.md#updating-install-data

We might need to update it to make it more clear.

The image has a version for the install data. And also the container. Both files are in different parts.

The version txt files for the image are in /domino-docker (we changed that from /local to ensure you can use /local as a volume).

The version txt files for the container are in the data directory. So we can compare at startup if we have a version change. This is part of the startup procedure.

The same is also implemented for Traveler but works a bit different in detail because we don't have the data1_bck files.

On the other side the Traveler files that need to be copied are a lot smaller, so we take the full install data an tar it.

Actually when I first looked into the Docker scripts from others, this was my first question and challenge and we worked on it from the beginning to have a solution for template and other install data update.

I hope this description is more understandable than what we currently have in the documentation?

Please ask if something is unclear! This helps us to improve documentation.

Does this help? Or do me need to look into it in more detail?

-- Daniel

6Sean  04.09.2019 8:44:43  Domino on Docker Project Updates

So great, please keep up the great work!

Links

    Archives


    • [HCL Domino]
    • [Domino on Linux]
    • [Nash!Com]
    • [Daniel Nashed]