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