DCTM 7.3 PostgreSQL with Docker install guide

This is a step-by-step guide to install Documentum 7.3 with Docker in a Linux host with PostgreSQL 9.4.

Environment

Host:
Windows 10 x64 8GB RAM
VMware Workstation Player 12

Guest:
CentOS 7 x64 25GB HD 4GB RAM 2 cores
PostgreSQL 9.4
Docker 1.12
Documentum 7.3 PostgreSQL docker tar file

VM Creation

Mount the CentOS 7 DVD image, boot the machine and follow the steps. You can choose to let EasyInstall do the work for you. I used minimal package install to save resources, named the machine vm-dctm73, configure the network and set the root password.

OS Configuration

Follow the instructions posted in the DCTM 7.3 PostgreSQL Dev. Edition post for configuring the OS and PostgreSQL 9.4 (no need to configure the ODBC, just install PostgreSQL and phpPgAdmin). This time I’ve used “dmdocker” instead of “dmadmin”.

Extra steps to perform:

  • Create the following folder structure:

[dmdocker@vm-dctm73 ~]$ sudo mkdir /opt/dctmdocker
[dmdocker@vm-dctm73 ~]$ sudo chown dmdocker.dmdocker /opt/dctmdocker
[dmdocker@vm-dctm73 ~]$ mkdir /opt/dctmdocker/installers
[dmdocker@vm-dctm73 ~]$ mkdir /opt/dctmdocker/data
[dmdocker@vm-dctm73 ~]$ mkdir /opt/dctmdocker/share

  • Update the distribution (you need at least kernel 3.10.0.229, you can check the version by running “uname -r”)

[dmdocker@vm-dctm73 ~]$ sudo yum update

  • Enable connections from 172.18.x.x to the database (IP used by docker containers, you can set this up after you run a docker contanier and know which IP range will be using, or you can enable access for anyone):

[dmadmin@vm-dctm73 opt]$ sudo vi /var/lib/pgsql/9.4/data/pg_hba.conf
host    all             all             172.18.0.1/24           md5
[dmadmin@vm-dctm73 opt]$ sudo systemctl restart postgresql-9.4

And don’t forget to copy the Documentum 7.3 docker tar file to /opt/dctmdocker/installers

Docker Configuration

  • Install docker:

[dmdocker@vm-dctm73 ~]$ curl -fsSL https://get.docker.com/ | sh

  • I had to remove docker selinux due to incompatibily problems so:

[dmdocker@vm-dctm73 ~]$ yum remove docker-engine-selinux

  • Add user to docker group to avoid using sudo every time we use the docker command:

[dmdocker@vm-dctm73 ~]$ sudo usermod -aG docker dmdocker

  • Enable the service and start docker daemon:

[dmdocker@vm-dctm73 ~]$ sudo systemctl enable docker.service
[dmdocker@vm-dctm73 ~]$ sudo systemctl start docker

  • Check docker is correctly installed by running the hello-world container:

[dmdocker@vm-dctm73 ~]$ docker run –rm hello-world

  • Install docker-compose (using root):

[root@vm-dctm73 ~]# curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[root@vm-dctm73 ~]# chmod +x /usr/local/bin/docker-compose

Content Server Configuration

  • Import the docker image:

[dmdocker@vm-dctm73 installers]$ docker load -i Contentserver_Centos.tar

  • Check the image is listed now in the local docker repository:

[dmdocker@vm-dctm73 ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
contentserver_centos    7.3.0000.0214        5a22b41bc55f        10 seconds ago      2.252 GB
hello-world         latest              c54a2cc56cbb        5 months ago        1.848 kB

  • Create the tablespace file:

[dmdocker@vm-dctm73 cs]$ su –
[root@vm-dctm73 ~]# su – postgres
-bash-4.2$ mkdir /var/lib/pgsql/9.4/data/db_centdb_dat.dat

  • Configure the required environment variables (remember that lockbox passphrase requires at least one uppercase letter, one symbol and one number):

[dmdocker@vm-dctm73 ~]$ vi .bash_profile

#app server admin password
export APP_SERVER_ADMIN_PASSWORD=dmadmin
#This is install owner password
export INSTALL_OWNER_PASSWORD=dmadmin
#This is root user password
export ROOT_USER_PASSWORD=dmadmin
#Repository password. Required only for stateless configuration
export REPOSITORY_PASSWORD=dmadmin
#External Data base Server Admin password
export EXTERNALDB_ADMIN_PASSWORD=dmadmin
#Global Registry password
export BOF_REGISTRY_USER_PASSWORD=dmadmin
#AEK passphrase
export AEK_PASSPHRASE=dmadmin
export LOCKBOX_PASSPHRASE=Documentum.73

  • Configure statelesscs.conf. Few notes:
    • Change IMAGE_NAME to the name of your image in your docker repository.
    • IP here is the IP of the virtual machine (CentOS) because our database is installed in the host.
    • ENABLE_LOCKBOX=false doesn’t work. It didn’t work for me when I did the (Unofficial) D7.2 Developer Docker edition (I) and it still doesn’t work. It’s probably a misconfiguration of the installer though.

[dmdocker@vm-dctm73 ~]$ vi /opt/dctmdocker/installers/Scripts/statelesscs.conf

###EMC Documentum on Docker
###(c) Copyright EMC Corp., 1992 – 2016
###All rights reserved.
###Version 1.0 dated 08/Sep/2016

#Documentum Content Server Image name
#Here 10.31.4.205 is Bangalore HUB.
#For PLE hub please change the ip as 10.8.46.202
#Here 7.3.0000 pointing to the latest 7.3 CS image. If we need perticular build version then just use 7.3.0000.0xxx
#Ex :  7.3.0000.0176
#Ubuntu Image:  10.31.4.205:5000/contentserver/ubuntu/stateless/cs:7.3.0000
#CentOS Image: 10.31.4.205:5000/contentserver/centos/stateless/cs:7.3.0000
#RHEL Image : 10.31.4.205:5000/contentserver/rhelora/stateless/cs:7.3.0000
IMAGE_NAME = contentserver_centos:7.3.0000.0214

#documentum License
HIGH_VOLUME_SERVER_LICENSE =
TRUSTED_LICNESE=
STORAGEAWARE_LICENSE=
XMLSTORE_LICENSE=
SNAPLOCKSTORE_LICENSE=LDNAPJEWPXQ
RPS_LICENSE=
FED_RECD_SERVICE_LICENSE=
RECORD_MANAGER_LICENSE=
PRM_LICENSE=

#Docbase configuration details
#Base machine IP
EXTERNAL_IP = 192.168.42.131

#External Data base server IP
EXTERNALDB_IP = 192.168.42.131

#External Data base Server Admin User
EXTERNALDB_ADMIN_USER = postgres

#External Data base Server Port number
#Default port for postgres is 5432. Oracle is 1521
DB_SERVER_PORT=5432

#Docbase ID
DOCBASE_ID = 45321

#Docbase name
DOCBASE_NAME = centdb

#Container host name.
CONTAINER_HOSTNAME = centstateless

#Container name.
CONTAINER_NAME = centstateless

#Conent Server port number to map in the base machine
CONTENT_SERVER_PORT= 50000
#Docbroker port number to map in the base machine
DOCBROKER_PORT =1689
#Method Server port number to map in the base machine
METHOD_SVR_PORT=9080

#App server management port
APP_SERVER_MGMNT_PORT=9084

#lockbox and aek related info
AEK_ALGORITHM = AES_256_CBC
#aek name
AEK_NAME = CSaek
#User wants to enable lock box then make it as true and provide the name and passphrase. To disable  lockbox then make it as false
ENABLE_LOCKBOX = true
LOCKBOX_FILE_NAME = lockbox.lb

#These are default values for 7.3. IF any thing is change like Jboss version or product version the change the values here
INSTALL_OWNER_USER=dmadmin
INSTALL_HOME=/opt
JBOSS=wildfly9.0.1
PRODUCT_MAJOR_VERSION=7.3

### remote data machine and docker plugin details.
#docker plugin type local,cifs,nfs etc. By default plugin is local, means the data file system is local. If you use the file system has remote then use proper plugin type and remote host details.
DOCKER_PLUGIN_TYPE=local
#Remote data machine.
EXTERNALDATA_HOST=192.168.42.131
#Data path folder which is on remote machine.You need to create a folder and share it on remote machine
REMOTE_DATA_PATH=/opt/dctmdocker/data
#Share path which is on remote machine. You need to create a folder and share it on remote machine
REMOTE_SHARE_PATH=/opt/dctmdocker/share
#If the docker plugin type is cifs then create a dmadmin user in base machine and provide the uid here. Otherwise this filed is empty.
#While starting the nethsare plugin please use  the same uid and gid as -o parameter
INSTALL_OWNER_UID=

#THUMBNAIL SERVER Configuration parameters. To enable Thumnail server make it as YES.
CONFIGURE_THUMBNAIL_SERVER = NO
THUMBNAIL_SERVER_PORT = 8081
THUMBNAIL_SERVER_SSL_PORT = 8443

  • Configure statelesscs_config_compose.yml:

[dmdocker@vm-dctm73 ~]$ vi /opt/dctmdocker/installers/Scripts/statelesscs_config_compose.yml

version: ‘2’
services:
dctm_cs:
image: contentserver_centos:7.3.0000.0214
environment:
– HIGH_VOLUME_SERVER_LICENSE=
– TRUSTED_LICNESE=
– STORAGEAWARE_LICENSE=
– XMLSTORE_LICENSE=
– SNAPLOCKSTORE_LICENSE=
– RPS_LICENSE=
– FED_RECD_SERVICE_LICENSE=
– RECORD_MANAGER_LICENSE=
– PRM_LICENSE=
– ROOT_USER_PASSWORD=${ROOT_USER_PASSWORD}
– INSTALL_OWNER_PASSWORD=${INSTALL_OWNER_PASSWORD}
– INSTALL_OWNER_USER=dmadmin
– REPOSITORY_PASSWORD=${REPOSITORY_PASSWORD}
– EXTERNAL_IP=192.168.42.131
– EXTERNALDB_IP=192.168.42.131
– EXTERNALDB_ADMIN_USER=postgres
– EXTERNALDB_ADMIN_PASSWORD=${EXTERNALDB_ADMIN_PASSWORD}
– DB_SERVER_PORT=5432
– DOCBASE_ID=45321
– DOCBASE_NAME=centdb
– USE_EXISTING_DATABASE_ACCOUNT=false
– INDEXSPACE_NAME=dm_repo_docbase
– BOF_REGISTRY_USER_PASSWORD=${BOF_REGISTRY_USER_PASSWORD}
– AEK_ALGORITHM=AES_256_CBC
– AEK_PASSPHRASE=${AEK_PASSPHRASE}
– AEK_NAME=CSaek
– ENABLE_LOCKBOX=true
– LOCKBOX_FILE_NAME=lockbox.lb
– LOCKBOX_PASSPHRASE=${LOCKBOX_PASSPHRASE}
– USE_EXISTING_AEK_LOCKBOX=false
– CONFIGURE_THUMBNAIL_SERVER=NO
– EXTDOCBROKERPORT=1689
– CONTENTSERVER_PORT=50000
– APP_SERVER_ADMIN_PASSWORD=${APP_SERVER_ADMIN_PASSWORD}
– INSTALL_OWNER_UID=1001
hostname:
“cont-dctm73”
container_name:
“dctm73docker”
ports:
– “DOCBROKER_PORT:DOCBROKER_PORT”
– “DOCBROKER_SECURE_PORT:DOCBROKER_SECURE_PORT”
– “CONTENT_SERVER_PORT:CONTENT_SERVER_PORT”
– “CONTENT_SERVER_SECURE_PORT:CONTENT_SERVER_SECURE_PORT”
– “METHOD_SVR_PORT:9080”
– “METHOD_SVR_SECURE_PORT:9082”
– “METHOD_SVR_JMX_PORT:9081”
– “THUMBNAIL_SERVER_PORT:8081”
– “THUMBNAIL_SERVER_SSL_PORT:8443”
– “APP_SERVER_MGMNT_PORT:9084”
volumes:
– DocbaseName_odbc:INSTALL_HOME/dctm/odbc
– DocbaseName_data:INSTALL_HOME/dctm/data
– DocbaseName_dba:INSTALL_HOME/dctm/dba
– DocbaseName_share:INSTALL_HOME/dctm/share
– DocbaseName_dfc:INSTALL_HOME/dctm/config
– DocbaseName_xhive_storage:INSTALL_HOME/dctm/xhive_storage
– DocbaseName_XhiveConnector:INSTALL_HOME/dctm/JBOSS/server/DctmServer_MethodServer/deployments/XhiveConnector.ear
– DocbaseName_mdserver_conf:INSTALL_HOME/dctm/mdserver_conf
– DocbaseName_mdserver_log:INSTALL_HOME/dctm/JBOSS/server/DctmServer_MethodServer/log
– DocbaseName_mdserver_logs:INSTALL_HOME/dctm/JBOSS/server/DctmServer_MethodServer/logs
– DocbaseName_Thumbnail_Server_conf:INSTALL_HOME/dctm/product/PRODUCT_MAJOR_VERSION/thumbsrv/conf
– DocbaseName_Thumbnail_Server_webinf:INSTALL_HOME/dctm/product/PRODUCT_MAJOR_VERSION/thumbsrv/container/webapps/thumbsrv/WEB-INF
privileged: true
volumes:
DocbaseName_data:
driver: DOCKER_PLUGIN_TYPE
driver_opts:
share: EXTERNALDATA_HOST/REMOTE_DATA_PATH
DocbaseName_dba:
DocbaseName_share:
driver: DOCKER_PLUGIN_TYPE
driver_opts:
share: EXTERNALDATA_HOST/REMOTE_SHARE_PATH
DocbaseName_dfc:
DocbaseName_odbc:
DocbaseName_XhiveConnector:
DocbaseName_mdserver_conf:
DocbaseName_mdserver_log:
DocbaseName_mdserver_logs:
DocbaseName_Thumbnail_Server_conf:
DocbaseName_Thumbnail_Server_webinf:
DocbaseName_xhive_storage:

  • Run the configuration script:

[dmdocker@vm-dctm73 ~]$ cd /opt/dctmdocker/installers/Scripts/
[dmdocker@vm-dctm73 Scripts]$ chmod 755 stateless_config.sh
[dmdocker@vm-dctm73 Scripts]$ ./stateless_config.sh

  • Now you can get a terminal from the container:

[dmdocker@vm-dctm73 Scripts]$ docker exec -i -t dctm73docker /bin/bash

And check the progress of the installation in /opt/dctm_docker/logs/centstateless/cont-dctm73.log

If anything fails and you need to run the script again, make sure the created volumes (docker volume ls) are removed before running again the script or the installer will fail.

11 thoughts on “DCTM 7.3 PostgreSQL with Docker install guide

  1. Followed your steps to the letter and I get the following error when loading the docker
    open /var/lib/docker/tmp/docker-import-778304236/repositories: no such file or directory

    Like

  2. […] DCTM 7.3 PostgreSQL with Docker install guide […] […] used the same VM I created in DCTM 7.3 PostgreSQL with Docker install guide, just remember to stop the PostgreSQL and httpd services to avoid […]

    Like

  3. […] DCTM 7.3 PostgreSQL with Docker install guide […] […] DCTM 7.3 PostgreSQL with Docker install guide […] […] used the same VM I created in DCTM 7.3 PostgreSQL with Docker install guide, just remember to stop the PostgreSQL and httpd services to avoid […]

    Like

  4. […] DCTM 7.3 PostgreSQL with Docker install guide […] […] DCTM 7.3 PostgreSQL with Docker install guide […] […] used the same VM I created in DCTM 7.3 PostgreSQL with Docker install guide, just remember to stop the PostgreSQL and httpd services to avoid […]

    Like

  5. In “https://blog.aldago.es/2016/12/17/dctm-7-3-postgresql-with-docker-install-guide/”, how this script stateless_config.sh was created?

    Like

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.