Summary
Question
This article describes how to create an ALM Docker image, and briefly explains how to use the image.
Security Disclaimer
Micro Focus encourages the customer to harden your Docker and securely configure ALM, which is not provided by Micro Focus by default. By not implementing secure configuration you may expose the system to increased security risks. You understand and agree to assume all associated risks and hold Micro Focus harmless for the same. It remains at all times the Customer’s sole responsibility to assess its own regulatory and business requirements. Micro Focus does not represent or warrant that its products comply with any specific legal or regulatory standards applicable to Customer in conducting Customer's business.
For details about ALM secured deployment, see the Secured Deployment and Configuration Guide.
Answer
Assumption
- You have an ALM installer.
- There is an installed ALM environment already, including database schema(s) and shared repository. If there is no such environment, please install one first.
- If you are using ALM in clustered deployment you should use a load balancer for that.
Overview
- ALM Docker container image should be a Linux box that already has ALM installed.
- The creation of an ALM Docker image is same like installing ALM on a Linux server and saving the server as a template but with Docker it should be faster and easier.
Supported Versions
- You can create a Docker image for all supported ALM versions, instructions in this doc apply to all versions.
-
Please choose a supported Linux distribution and version as a base for the Docker image. Check ALM System Requirements for details.
in this guide we used Centos 7 as an example.
Preparation
Please prepare in advance:
- A Linux server that can run Docker. Please check with Docker official document for supported OS. Ubuntu 16.04 is used in this guide as an example. This server needs to be able to access internet (or via proxy).
- JDK installer – we use OpenJDK 1.8 as an example in this article but you can choose any compatible JDK.
- A supported DB, we use Oracle in this doc.
- ALM silent installation files:
- qcConfigFile.properties
- ALM installation license file
Steps to generate an ALM Docker image
- Create a folder (we will call it the working folder) in the Linux server and put the files below into it:
- ALM installer
- JDK installer if needed
- qcConfigFile.properties for silent installation
- siteadmin.xml from your existing ALM environment
(normally in <deploymentPath>/ webapps/qcbin/WEB-INF/ )
- other customized files in your existing ALM environment
- See the following Dockerfile example, create a Dockerfile for your environment and put it into the working folder.
- Save the following as ‘run_silent.sh’ into the working folder.
- Run the following command in the working folder. You can replace the tag as you want. And then upload the built Docker image to a private Docker hub or your own Docker registry.
Use the ALM Docker image to deploy an ALM cluster
- This Docker image can run on most Linux systems that support Docker.
- This Docker image should be able to work with Kubernetes and related tools such as OpenShift and Rancher.
- Below is a sample command to deploy a Docker container for ALM.
- Configure your load balancer to the deployed ALM Docker container
- For more details about docker build and docker run command, refer to the Docker document: https://docs.docker.com/engine/reference/commandline/docker/
Upgrade
Assuming that the ALM Docker container is already working please follow the steps below to upgrade ALM in container:
- Backup DB schema, repository, and customization, etc.
- Get the new version of ALM Docker container image ready
- Upgrade ALM Site Admin schema – this can be done by running ALM upgrade in any environment.
- Start the new container and connect to the upgraded Site Admin schema.
- In ALM site admin UI, upgrade the project schema and verify repository.
- Scale up the cluster and re-configure the load balancer if needed.
Daily Operations
Starting an ALM Docker container basically has the same result as starting ALM in a Linux server. See some samples below:
- Stop ALM:
- Stop a single node: docker stop <container name>
- Stop all nodes: for each container, run docker stop command.
- If it is running inside Kubernetes, just set scaling number to 0 to stop all running containers.
-
Start ALM:
- Start a previously stopped container: docker start <container name>
- Start a new container: docker run <image name>
- If it is running inside Kubernetes, just increase the existing scaling number by 1 to start a new node.
- Update contents inside container:
If you want to update something inside the Docker container, it is recommended that you do that in Dockerfile, and generate a new image that contain the changes. Then stop all old images and deploy new containers with the new image.