Domino 12.0.2 on Docker - some changes with One Touch setup

Sunday, November 27, 2022 at 11:30 PM UTC

Today I learned the hard way what it means to "reset" the Docker Desktop installation using a tool like "Clean My Mac X", a tool that I strongly recommend to get rid of all crap that slows down your system - and does much more.

However, resetting a Docker Desktop installation means that everything is wiped - except from the program itself. Docker started to be unstable, so my plan was to re-install it.

After I did this task, I found out that all my containers were gone - including the images and volumes. The latter is the worst, so be careful.

To get my local dev Domino back, I didn't want to go the usual way with setting it up manually but to use the one touch setup feature I didn't use for a while. As I am a developer, I prefer the JSON format of the settings definitions over the ENV file way.

I already made a how-to about it but I got stuck when it came to execute the /local/start.sh script - it didn't exist anymore in the setup container.

Some research later I finally found the updated HCL docs for one touch which clearly do not mention the script anymore. Instead you use a different approach on bringing the JSON config file and the server.id to the container - and also finally starting the server if everything goes fine. In the end I find this new way much easier.

I first built the image as usual, using 12.0.2 and Domino Leap on top. The latest version of the Domino Container repo (I am using the development branch) already features these settings.

This is a minimum example of a config JSON file for an additional server that I wanted to create. More details on all settings can be found here: https://help.hcltechsw.com/domino/12.0.2/admin/inst_onetouch_preparing_json.html

{
    "serverSetup": {
        "server": {
            "type": "additional",
            "name": "MyNewServer/MyOrg",
            "domainName": "MyOrg",
            "IDFilePath": "/tmp/newserver.id"
        },
        "network": {
            "hostName": "DominoOnDocker",
            "enablePortEncryption": true,
            "enablePortCompression": true
        },
        "org": {
            "orgName": "MyOrg"
        },
        "admin": {
            "CN": "Domino Admin"
        },
        "existingServer": {
            "CN": "MyAdminServer",
            "hostNameOrIP": "192.xxx.xxx.xxx"
        }
    },
    "autoConfigPreferences": {
        "startServerAfterConfiguration": true
    }
}

Of course you have to register the server first if it's really a new one, in my case I already had the server.id. The admin server (or another from the same domain) must be accessible via its hostname or IP address.

Once you have your JSON config file and the server id in place on your machine from where you execute the setup, it's a matter of the Docker command finally to be executed.

First create a volume (if not already present). Remember, I lost mine. So do a

docker volume create notesdata

docker run -it -d -v notesdata:/local/notesdata -v ~/newserver.json:/tmp/auto-config.json -v ~/newserver.id:/tmp/newserver.id --name DominoOnDocker --env SetupAutoConfigure=1 --env SetupAutoConfigureParams=/tmp/auto-config.json -p 8585:8585 -p 80:80 -p 443:443 -p 9443:9443 -p 1352:1352 --stop-timeout=60 --cap-add=SYS_PTRACE hclcom/leap:latest

The command assumes that the JSON config file and the server.id reside in your user's home directory.

The reason why I already opened several ports here is that the setup container will already be your final container to run Domino. This is done with the JSON value startServerAfterConfiguration in the autoConfigPreferences section.

To check what is happening during the config, bash into the container and start the console script:

docker exec -it -u 0 DominoOnDocker bash

and here type

domino console

If the setup was successful, you can see the server starting up as usual - it takes a little while for the initial configuration. If not, check the file

/local/notesdata/IBM_TECHNICAL_SUPPORT/autoconfigure.log

Source: https://help.hcltechsw.com/domino/12.0.2/admin/inst_onetouch_invoking_json_docker.html






Latest comments to this post

Daniel Nashed wrote on 28.11.2022, 09:37

Some side notes:

The new HCL image is essentially the HCL Community image. It's based on Redhat UBI 8.6.
The HCL image also has a HCL Traveler and HCL Domino Leap container, which you can download from Flexnet. Both are built on the same base image.

But the community image is always up to date and provides you with the latest tooling around and also more add-on image options. So I would personally also stay on the community image :-)

The setup is aligned with what the community image did earlier and uses my Nash!Com Domino start script inside the container. And there is some additional magic to replace template environment variables in JSON files.

In a production environment I would recommend using host volumes instead of Docker volumes!

So instead of using:  -v notesdata:local/notesdata
I would use -v /local/notesdata:/local/notes data.
This will map the physical volume to your container and this directory is independent from your Docker host!

In addition you might want to look into dominoctl, which I made also available for Mac.

--> https://nashcom.github.io/domino-startscript/dominoctl/

 

 Link to this comment

Leave a comment right here