Sunday, February 21, 2016

IBM Connect 2016, my slides about running IBM Domino inside a Docker container with my dockerfile

During last IBM Connecti 2016 I had the pleasure to be selected with my colleague Daniele Vistalli for a lightning talk (30 minutes session) named "AD-1772, Shipping Domino, How to put Domino in a Container and live happy".

I like to start with a disclaimer : running Domino inside a Docker container is not supported by IBM  , so you can of course do that but at your own risk.

After this disclaimer, i like to say Domino inside a Docker container works great and can be really useful for development task (see the slides to get our idea about that ).



Connect2016 - 1172 Shipping domino from Matteo Bisi


I've  start a github account with the script we have used during the live demo during our session and you can found the docker file following this link.
Inside the docker repository you can find 3 scripts:

  1. Dockerfile-domino4ubuntu-install
  2. Dockerfile-domino4ubuntu-setup
  3. Dockerfile-domino4ubuntu-FP5
Using this 3 script you will be able to create a Domino Image pre configured with a server id of your environment.
We have decided to split the creation of the Docker Image to 3 script for flexibility but you can obviously build a docker file that install , configure and upgrade domino  inside an image.

To run this scripts you have to prepare a working directory with the following: 
  • a folder named domino901 that contains the uncompressed Domino setup,  
  • initscripts that contains the Domino init script form Daniel Nashed (thanks again for your work!) , 
  • serverconfig that contains the Domino certifier domino admin ID and the txt file with the ids pw

If you have prepared all this things you can proceed to build your Docker Image using the script in the correct order.

The Install script will build the image starting from Ubuntu SRV 14.04 LTS and will prepare the environment and setup -up Domino silently inside the container.

The setup script will build a new image starting from the previous , and will make a silent configuration of the domino server copying the pds file ( you can obtain your pds file running a serverconfig -record from your notes directory) , the txt file with all id passwords.

To build the image you have to use the docker build command :

docker build -t mbisi/domino901-ready-playground:1.0 -f Dockerfile-domino4ubuntu-setup .

after that you can start the container mapping his ports with this docker run command:

docker run -it -p 1352:1352 -p 80:80 -p 443:443 mbisi/domino901-ready-playground:latest


The FP5 script will build a new image upgraded to the new FP.

Inside the image we have defined /local/notesdata as volume so the data of the Container will be persistence.

This Dockerfile would be a proof of concept to give you an some idea and help to starts your own container.

If you don't know Docker and you are interested to work with container you can start here with this nice video tutorial

17 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Matteo, the last link you have, talking about a video tutorial, seems to link to a `.exe` file.

    ReplyDelete
  3. Matteo, thanks for the session and this blog post. In this post, you don't mention using the Dockerfile-domino4ubuntu-install file. I assume you do a build of it a step before doing a build of the ...-setup file. And I assume it would look something like this: docker build -t mbisi/domino901-ready-playground:1.0 -f Dockerfile-domino4ubuntu-install . Did you encounter any errors in executing that build? At Step 10, the domino install step, I get errors about read-only file system. It's at usr/share initially, so following input from a couple of posts out there, I re-ordered the chmod/chown statements and tried again. This also generated error about read-only file system, this time at write /opt/ibm/domino/notes/90010/linux/xmlschemas/domino_8_5_1.dtd, which is a command in the domino installer. Just checking that I'm actually doing the Docker build I'm supposed to, and if you have any thoughts about things I should check, thanks in advance!

    ReplyDelete
  4. Hi Lance, yes i made a docker build like the one u wrote on your post but in my case work correctly.


    I remember i had some issue like yours using cetos or redhat, which os are u using?

    ReplyDelete
  5. Matteo, thx for response. Ubuntu 14.0.4 for host. Figured out that I was running too small of an EC2 instance at AWS for the build as I would get that message at different points during the install. Moved to a more powerful instance and got builds working. I now have Domino running in a Docker container, yea! However, now figuring out to get a Notes client to talk to it. It can see the port, but trace is showing Connection Denied. The server you connected to has a different name from the one requested. Not sure if there's a hosts file issue in the container that needs to be figured out. I'll post back here if I get it resolved.

    ReplyDelete
  6. Yeah happy to see you have fixed your issue! Probably you need to add a connections with domino name and ip address on notes client.

    Have a great week

    ReplyDelete
  7. Hmm, you were correct. Strange, in that it seemed to be picking up the address from the NAB. Trace port on Servername/Domain translated to right DNS and IP. Anyway, once in personal NAB, immediately worked. Only other thing I did was modify the docker run command to do an --add-host=dnsname:127.0.0.1 One of those 2, personal nab/docker run modification did it, possibly both. Thanks again. This makes for some very interesting possibilities for IBM Connections Cloud hybrid environment where there's still a requirement for a passthru and Resource and Reservations server.

    ReplyDelete
    Replies
    1. Happy it worked. We have same idea about domino inside docker for passthru in hybrid config but until now we havent used yet in prod environment (also because unfortunately until now domino isn't supported inside a container.) Have a nice week

      Delete
  8. Since I apparently didn't like my first comment, thanks for Sharing Matteo. This is a great topic.

    ReplyDelete
  9. Matteo,
    very nice post, but i have a problem.
    I want run Ibm Notes 9 in docker container.
    Isn't a server, it's a gui application, and they run in 12.04 ubuntu version.
    Any suggest ?
    Ty.
    Alessandro A.


    ReplyDelete
    Replies
    1. Hello Alessandro,
      i never tried to use docker for gui application but i read it should works. You have to install the required library to start the gui.
      If you are running docker on windows you should install also an x server like xming.

      Good luck

      Delete
  10. great post, Matteo. I will try to dockerize my Domino installation. Do you think I could make my Domino docker image work with OpenNTF extension library and xockets.io plugin without a problem?

    ReplyDelete
    Replies
    1. Hi, sure you could, but remember today Domino on docker is not supported !

      Delete
  11. Is there a way to download the Domino installation for testing purposes?

    ReplyDelete
    Replies
    1. Hi Andrea, check this link

      https://www.ibm.com/developerworks/downloads/ls/lsds/index.html

      Delete