Deploying HCL Commerce Version 9.1 with Solr-based search and an Oracle database using Docker Compose

The following steps highlight a basic deployment of HCL Commerce Version 9.1 with Docker Compose. This deployment is configured to deploy HCL Commerce Version 9.1 with the Solr-based search solution, and utilizes the Oracle as the database solution.

Note: The following steps detail the use of this process with the provided IBM Db2 Database Docker image. This is due to its inclusion within the provided Docker Compose files. This process is not incompatible with Oracle, however its use is outside of the scope of the presented scenario. The prerequisite for this procedure does include all that you will need to know to successfully deploy HCL Commerce with Docker Compose using an Oracle database.

Before you begin

Procedure

  1. Deploy the HCL Commerce authoring environment applications.
    1. Copy the contents of the provided docker-compose-solr-commerce-oracle-auth-template.yml Docker Compose file into your custom docker-compose.yml Docker Compose file.
    2. Update the file to reflect the environment that you want to deploy.
      1. Accept the LICENSE required for all Docker containers. For example, - LICENSE=accept.
      2. Update the image tag for all HCL Commerce Docker containers. For example, image: ts-app:9.1.
      3. Update the mandatory configuration parameters for the Transaction container.
        Parameter name Description
        MERCHANTKEY_ENCRYPT The encrypted merchant key that was created when you or an administrator loaded the HCL Commerce database schema. For more information, see Loading the HCL Commerce database schema.
        SPIUSER_NAME Your SPIUSER name. The default value is spiuser.
        SPIUSER_PWD The encrypted password for the spiuser. For more information, see Setting the spiuser password in your Docker images.
        JWKS The HCL Commerce Tooling Single Page Application (SPA) uses JSON Web Tokens (JWT) for API authentication. Update this value to set the JSON Web Key Set (JWKS) and key ID in the Transaction server in order to sign and validate JWT. The JWKS can be generated by the generateJWKS utility.
        JWKS_KEYID The Key ID of the JWKS, the default value is k1.
        TOOLING_BASE_URL This value is used by Management Center to load the Tooling SPA from the Tooling Web Server.
        ELASTICSEARCH_ENABLED Specify if the environment is using the Elasticsearch-based or Solr-based search solution. Accepted values are true for Elasticsearch-based search, and false for Solr-based search.
        STORE_HOST Store server hostname.
        STOREWEB_HOST The Store web server hostname.
        Note: If you have multiple stores running on multiple domains, you can configure your domains to redirect to STOREWEB_HOST to ensure that preview works for all stores.
        REACT_STORE_HOST The hostname for the React-based store. This is only required when the Elasticsearch-based search solution is enabled.
        DBHOST The database hostname.
        DBNAME The name of the database.
        DBUSER The database user name.
        DBPASS The database user password.
        DBPORT The database port.
        DBAUSER The database administrator.
        DBAPASSENCRYPT The database administrator password that is encrypted with the wcs_encrypt.sh utility.
        DBPASSENCRYPT The database user password that is encrypted with the wcs_encrypt.sh utility.
        HCL Commerce Version 9.1.12.0 or laterSESSION_KEY_ENCRYPT The encrypted session key.
        Note: This parameter was optional in all releases prior to HCL Commerce 9.1.12.0.
        For example,
        
        - adminPassword=passw0rd 
        - SPIUSER_NAME=spiuser 
        - SPIUSER_PWD=DFrt/KnXFukMl3VyuSg4vYm6f7Y7f1RogMUIUAdMakk= 
           
        - DBHOST=authdb.hclcommerce.com   
        - DBNAME=orclpdb1
        - DBUSER=wcs
        - DBPASS=wcs1
        - DBPORT=1521  
        - DBTYPE=oracle
        - DBAUSER=system  
        - DBAPASSENCRYPT=u5fOjsJvd7QYYs29qTnqx418LVytXLHxhEu1Pg5IrzQ=  
        - DBPASSENCRYPT=WVRDsn+rEpaSbm59Iw/yoYsNnH1U2ovg52j5nzdW1L0=   
        
        - JWKS={base64}eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJraWQiOiJrMSIsIm4iOiJtc1NIbE9pVlRFRUgzMW9KYk1XcTFWU3NsS1dHRnAybmlpdUdzR293Qk5zR1hLWGU0SDI4cWlMZmdIMWVGdWVmdl81cEZOSUlKYlVSUjBkVWtPWGlxTDRrNTBxQ1Nmemo4S0ROTmsyYV9KakdobTZ6dFNPTnBtSDdzSWZJX2o3YlF4WWNzaVN4cklSWnBSOGdNem5TNmV2VXJmMWZZVWpVbEszd2RoMi1vc2t6NTVGR1A4YXdCRnlQTEhWbmo5S1VtaU1zdHR2eTg1VW9COTBuT3d5U0Q5UHl3clF3el9pMlIzcUVIYWJSQ0FVOGY4MnRKTE9HeWxrbUhnY2NaYmk0d0FBWG1JemJwTzVxYTFrV2lBVGMyRjVYTGNUOE1KVHZRdkZPWFNjTGs5LTBWYzNpYnF3WEx4Slg0MENVbUpzSEdESTZ2c3hPWEh1LXBfVW5HOV91bVEiLCJlIjoiQVFBQiIsImQiOiJCMmRGVVJNN0tSV25TY0RsMklVd0lkcFdFeHBENnNzSjI2c3ZXenNKSndKUE1KbGlxdng0ek82MElGSmU4TnVOb2NLS3hrc3h4cFA5eXBvWDZvS0VzQ3ZBV2l3UFJYaktjcFZPbTcxa241YXpVSFQxTmNJSW9aX29TVTZGaDl2NzR4Nm9xc0RrbXVzTjJyODliQlhsQl9tWEItZXA2MTV2aE5rNU9uMDd4RS1ta2cwb1Y4VXRlVnVjNy0wMzA5NzFBdGJnbExQZ3BPZHFnczc5cGVjWXVxVlE1WHlQcVZMSnBraHBDbFgzOWQzazFGUy01YXo5Uk9BaVRHMEhUYi03MVlSTzVvYlFpc01JOXE0ZTAwaHIyR3B1bzFJb3dmLUlJN213SzRRanU3aVhBRHI0eF9WSHVHeUJaY1p4NVBueVJUaGpsREx4TUtVOHFsc2dlRTdHOFEiLCJwIjoiMFByVmZud0lSdkJkRjZvanBxUzM2NzdaYVdXWWJSQ3N1Ynd6aWxiQTdTYzU0LXBCV0hxZ2Q2YlYxMHpCdWhGWnZwa0QxV00wbGJqMmNzTzhvZTRHZjREZ0N6UkpzdEtjNnhwbFVhVzZzeGE0RklidERNVUpEa3JGLW5uUWdDSk41b21fNkRvc0k1OEdXVDFvMllOTE9pSVE0Z2NhYmVheUVIZDNJUmZTQUhVIiwicSI6InZaY1lneTFlSFdzZTRaOE03M1RoUTE4WUtXelR0RFJsX085WTVaT2pObDBnQkFCQ3ZHcGdQOWk4NXJ1VXk0WTgzbnhDTUdjYjVPbHI2ZV9JQW9kMENLT2lxeEZtNjV5MEFBaVlnOW5HN1ZlaVFUTzRwMDE0N0RlaDBxX3pFR1UyYzFWOUNFR1BhVUhNcEdSZGc4UVRCc01mRTVZWEx2ZkE2dVVqWllWaHNSVSIsImRwIjoiTFlRVWItSVA0M09Dc3g3SmVRZ3pUdE5ZZ3c0dnJzR01fVDh5Y3BVR25DQ0pDVTBDUW9VaTRpeWlNcXh6SFZXZUdGYzNjSWlVOFc5QnJpbFhzbVVuWVNudW9rSVhNeTJRSTl5eDZLQ1NFMk9GWUdNcXlqYzRDN2JaZV82QUhRaGJzelNaYWJrUjJBaFExNnI2WlRXbGN0bnNsMjQ0b1dzM3FVSjczZWRVUS1rIiwiZHEiOiJlYWF1TDkyNGVoXzJITWUxd1NDNk9rU1dlRjVBS1cxRjA5cXdxXzdqeDBwUjlMOUdFeWdld2xrTVBQRTROS19aOXRpOGo5cFpaN1R2YlpoU09tMDM0eU04aVpBTV9qbjZ0ZHJPSWl4bkhId1N2TXUzUElMVmlKeloxUnJaV0RmWmpIX2FUcVhpbzZONDhETUdYam8tQ3lUQW1BekNxM3lGNlROR1Z5b1MyVkUiLCJxaSI6IllUWFI4QjVRUE1jbzIzelo2Wi1jLTFhSVJuOF9BRWk5TGplZ2xEaVJ0T2E4dHpPZUdQeU9mX0h4WnpzMFItaVdpMWFET1dWR2tDd1pLdG5Uc2lMdFBQRUdSVzFRNXZlVHdZdjVlWHozR2F2VTBzS2RLQzBJSkpJaWdNa053UFIxLU5hLTRBVHprQ0pqbGd3QVFHZ0FySTR5Vk1TR2RGYXpCRm9FdjM3OTFkWSJ9XX0= 
        - JWKS_KEYID=k1  
        
        - TOOLING_BASE_URL=https://auth.hclcommerce.com:7443/tooling 
        - STOREWEB_HOST=auth.hclcommerce.com 
         
      4. Update the configuration for your search-master container.
        Parameter name Description Configuration
        SPIUSER_NAME Your SPIUSER name. The default value is spiuser.
        HCL Commerce Version 9.1.7.0 or laterNote: This value is optional as of HCL Commerce 9.1.7.0.
        Container environment variable/Vault
        SPIUSER_PWD The encrypted password for the spiuser. For more information, see Setting the spiuser password in your Docker images. Container environment variable/Vault
        ADMIN_SPIUSER_PWD The ADMIN_SPIUSER_PWD must be the same value as SPIUSER_PWD but kept as plain text. Container environment variable/Vault
        DBHOST The database hostname. Container environment variable/Vault
        DBNAME The name of the database. Container environment variable/Vault
        DBUSER The database user name. Container environment variable/Vault
        DBPASS The database user password. Container environment variable/Vault
        DBPORT The database port. Container environment variable/Vault
        DBAUSER The database administrator. Container environment variable/Vault
        DBAPASSENCRYPT The database administrator password that is encrypted with the wcs_encrypt.sh utility. Container environment variable/Vault
        DBPASSENCRYPT The database user password that is encrypted with the wcs_encrypt.sh utility. Container environment variable/Vault
        HCL Commerce Version 9.1.12.0 or laterSESSION_KEY_ENCRYPT The encrypted session key.
        Note: This parameter was optional in all releases prior to HCL Commerce 9.1.12.0.
        Container environment variable/Vault
        For example,
        - adminPassword=passw0rd
        - SPIUSER_NAME=spiuser 
        - SPIUSER_PWD=DFrt/KnXFukMl3VyuSg4vYm6f7Y7f1RogMUIUAdMakk= 
        
        - DBTYPE=oracle
        - DBHOST=authdb.hclcommerce.com
        - DBPORT=1521 
        - DBNAME=orclpdb1
        - DBUSER=wcs 
        - DBAUSER=system 
        - DBPASS=wcs1 
        - DBAPASSENCRYPT=u5fOjsJvd7QYYs29qTnqx418LVytXLHxhEu1Pg5IrzQ= 
        - DBPASSENCRYPT=WVRDsn+rEpaSbm59Iw/yoYsNnH1U2ovg52j5nzdW1L0= 
      5. Update the base64SpiUserPassword parameter within the health check section of the search-master container, to the base64 encoded values of spiUser:spiPassword.
        You can obtain this value by passing the values through the base64 system utility:
        echo -n "spiUser:spiPassword" | base64
        For example, the resulting value is c3BpdXNlcjpwYXNzdzByZA== with the default spiuser:passw0rd combination.
    3. Copy the Oracle JDBC JDK8 driver (ojdbc8.jar) to the same location where your Docker Compose file is located, if you have not already.
    4. Start the HCL Commerce authoring environment.
      Run docker-compose up -d.
    5. Verify that all of the Docker containers are up and healthy.
      Run docker-compose ps.
  2. Deploy the HCL Commerce live environment applications.
    1. Copy the contents of the provided docker-compose-solr-commerce-oracle-live-template.yml Docker Compose file into your custom docker-compose.yml Docker Compose file.
    2. Update the file to reflect the environment that you want to deploy.
      1. Accept the LICENSE required for all Docker containers. For example, - LICENSE=accept.
      2. Update the image tag for all HCL Commerce Docker containers. For example, image: ts-app:9.1.
      3. Update the following configuration parameters for the Transaction server Docker container.
        Parameter name Description
        MERCHANTKEY_ENCRYPT The encrypted merchant key that was created when you or an administrator loaded the HCL Commerce database schema. For more information, see Loading the HCL Commerce database schema.
        SPIUSER_NAME Your SPIUSER name. The default value is spiuser.
        SPIUSER_PWD The encrypted password for the spiuser. For more information, see Setting the spiuser password in your Docker images.
        JWKS The HCL Commerce Tooling Single Page Application (SPA) uses JSON Web Tokens (JWT) for API authentication. Update this value to set the JSON Web Key Set (JWKS) and key ID in the Transaction server in order to sign and validate JWT. The JWKS can be generated by the generateJWKS utility.
        JWKS_KEYID The Key ID of the JWKS, the default value is k1.
        TOOLING_BASE_URL This value is used by Management Center to load the Tooling SPA from the Tooling Web Server.
        ELASTICSEARCH_ENABLED Specify if the environment is using the Elasticsearch-based or Solr-based search solution. Accepted values are true for Elasticsearch-based search, and false for Solr-based search.
        STORE_HOST Store server hostname.
        STOREWEB_HOST The Store web server hostname.
        Note: If you have multiple stores running on multiple domains, you can configure your domains to redirect to STOREWEB_HOST to ensure that preview works for all stores.
        REACT_STORE_HOST The hostname for the React-based store. This is only required when the Elasticsearch-based search solution is enabled.
        DBHOST The database hostname.
        DBNAME The name of the database.
        DBUSER The database user name.
        DBPASS The database user password.
        DBPORT The database port.
        DBAUSER The database administrator.
        DBAPASSENCRYPT The database administrator password that is encrypted with the wcs_encrypt.sh utility.
        DBPASSENCRYPT The database user password that is encrypted with the wcs_encrypt.sh utility.
        HCL Commerce Version 9.1.12.0 or laterSESSION_KEY_ENCRYPT The encrypted session key.
        Note: This parameter was optional in all releases prior to HCL Commerce 9.1.12.0.
        For example,
        - adminPassword=passw0rd  
        - SPIUSER_NAME=spiuser 
        - SPIUSER_PWD=DFrt/KnXFukMl3VyuSg4vYm6f7Y7f1RogMUIUAdMakk= 
        
        - DBTYPE=oracle 
        - DBHOST=livedb.hclcommerce.com 
        - DBPORT=1521 
        - DBNAME=orclpdb1  
        - DBUSER=wcs 
        - DBPASS=wcs1 
        - DBAUSER=system 
        - DBAPASSENCRYPT=u5fOjsJvd7QYYs29qTnqx418LVytXLHxhEu1Pg5IrzQ= 
        - DBPASSENCRYPT=WVRDsn+rEpaSbm59Iw/yoYsNnH1U2ovg52j5nzdW1L0= 
           
        - JWKS={base64}eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJraWQiOiJrMSIsIm4iOiJtc1NIbE9pVlRFRUgzMW9KYk1XcTFWU3NsS1dHRnAybmlpdUdzR293Qk5zR1hLWGU0SDI4cWlMZmdIMWVGdWVmdl81cEZOSUlKYlVSUjBkVWtPWGlxTDRrNTBxQ1Nmemo4S0ROTmsyYV9KakdobTZ6dFNPTnBtSDdzSWZJX2o3YlF4WWNzaVN4cklSWnBSOGdNem5TNmV2VXJmMWZZVWpVbEszd2RoMi1vc2t6NTVGR1A4YXdCRnlQTEhWbmo5S1VtaU1zdHR2eTg1VW9COTBuT3d5U0Q5UHl3clF3el9pMlIzcUVIYWJSQ0FVOGY4MnRKTE9HeWxrbUhnY2NaYmk0d0FBWG1JemJwTzVxYTFrV2lBVGMyRjVYTGNUOE1KVHZRdkZPWFNjTGs5LTBWYzNpYnF3WEx4Slg0MENVbUpzSEdESTZ2c3hPWEh1LXBfVW5HOV91bVEiLCJlIjoiQVFBQiIsImQiOiJCMmRGVVJNN0tSV25TY0RsMklVd0lkcFdFeHBENnNzSjI2c3ZXenNKSndKUE1KbGlxdng0ek82MElGSmU4TnVOb2NLS3hrc3h4cFA5eXBvWDZvS0VzQ3ZBV2l3UFJYaktjcFZPbTcxa241YXpVSFQxTmNJSW9aX29TVTZGaDl2NzR4Nm9xc0RrbXVzTjJyODliQlhsQl9tWEItZXA2MTV2aE5rNU9uMDd4RS1ta2cwb1Y4VXRlVnVjNy0wMzA5NzFBdGJnbExQZ3BPZHFnczc5cGVjWXVxVlE1WHlQcVZMSnBraHBDbFgzOWQzazFGUy01YXo5Uk9BaVRHMEhUYi03MVlSTzVvYlFpc01JOXE0ZTAwaHIyR3B1bzFJb3dmLUlJN213SzRRanU3aVhBRHI0eF9WSHVHeUJaY1p4NVBueVJUaGpsREx4TUtVOHFsc2dlRTdHOFEiLCJwIjoiMFByVmZud0lSdkJkRjZvanBxUzM2NzdaYVdXWWJSQ3N1Ynd6aWxiQTdTYzU0LXBCV0hxZ2Q2YlYxMHpCdWhGWnZwa0QxV00wbGJqMmNzTzhvZTRHZjREZ0N6UkpzdEtjNnhwbFVhVzZzeGE0RklidERNVUpEa3JGLW5uUWdDSk41b21fNkRvc0k1OEdXVDFvMllOTE9pSVE0Z2NhYmVheUVIZDNJUmZTQUhVIiwicSI6InZaY1lneTFlSFdzZTRaOE03M1RoUTE4WUtXelR0RFJsX085WTVaT2pObDBnQkFCQ3ZHcGdQOWk4NXJ1VXk0WTgzbnhDTUdjYjVPbHI2ZV9JQW9kMENLT2lxeEZtNjV5MEFBaVlnOW5HN1ZlaVFUTzRwMDE0N0RlaDBxX3pFR1UyYzFWOUNFR1BhVUhNcEdSZGc4UVRCc01mRTVZWEx2ZkE2dVVqWllWaHNSVSIsImRwIjoiTFlRVWItSVA0M09Dc3g3SmVRZ3pUdE5ZZ3c0dnJzR01fVDh5Y3BVR25DQ0pDVTBDUW9VaTRpeWlNcXh6SFZXZUdGYzNjSWlVOFc5QnJpbFhzbVVuWVNudW9rSVhNeTJRSTl5eDZLQ1NFMk9GWUdNcXlqYzRDN2JaZV82QUhRaGJzelNaYWJrUjJBaFExNnI2WlRXbGN0bnNsMjQ0b1dzM3FVSjczZWRVUS1rIiwiZHEiOiJlYWF1TDkyNGVoXzJITWUxd1NDNk9rU1dlRjVBS1cxRjA5cXdxXzdqeDBwUjlMOUdFeWdld2xrTVBQRTROS19aOXRpOGo5cFpaN1R2YlpoU09tMDM0eU04aVpBTV9qbjZ0ZHJPSWl4bkhId1N2TXUzUElMVmlKeloxUnJaV0RmWmpIX2FUcVhpbzZONDhETUdYam8tQ3lUQW1BekNxM3lGNlROR1Z5b1MyVkUiLCJxaSI6IllUWFI4QjVRUE1jbzIzelo2Wi1jLTFhSVJuOF9BRWk5TGplZ2xEaVJ0T2E4dHpPZUdQeU9mX0h4WnpzMFItaVdpMWFET1dWR2tDd1pLdG5Uc2lMdFBQRUdSVzFRNXZlVHdZdjVlWHozR2F2VTBzS2RLQzBJSkpJaWdNa053UFIxLU5hLTRBVHprQ0pqbGd3QVFHZ0FySTR5Vk1TR2RGYXpCRm9FdjM3OTFkWSJ9XX0= 
        - JWKS_KEYID=k1 
           
        - TOOLING_BASE_URL=https://live.hclcommerce.com:7443/tooling 
           
        - ELASTICSEARCH_ENABLED=false 
        
        - STOREWEB_HOST=live.hclcommerce.com 
         
      4. Update the following configuration for the search-repeater and search-slave containers:
        Parameter name Description
        SPIUSER_NAME Your SPIUSER name. The default value is spiuser.
        SPIUSER_PWD The encrypted password for the spiuser. For more information, see Setting the spiuser password in your Docker images
        DBHOST The database hostname.
        DBNAME The name of the database.
        DBUSER The database user name.
        DBPASS The database user password.
        DBTYPE The database type.
        For example,
        - SPIUSER_NAME=spiuser 
        - SPIUSER_PWD=DFrt/KnXFukMl3VyuSg4vYm6f7Y7f1RogMUIUAdMakk= 
         
        - DBHOST=livedb.hclcommerce.com 
        - DBNAME=orclpdb1 
        - DBUSER=wcs 
        - DBPASS=wcs1 
        - DBPORT=1521 
        - DBTYPE=oracle 
        
      5. Update the search-master host configuration for the search-repeater containers:
        Parameter name Description
        search_master The IP and port of the search node to poll from. Mandatory for the search-repeater/subordinate on the live environment.
        • For the search-repeater node, specify the
          search-master-ip:3737
        • For the search-subordinate node, specify the
          search-repeater-ip:3737
        For example,
        - "search_master:searchmaster.hclcommerce.com"
      6. Update the base64SpiUserPassword parameter within the health check section of the search-repeater and search-slave containers, to the base64 encoded values of spiUser:spiPassword.
        You can obtain this value by passing the values through the base64 system utility:
        echo -n "spiUser:spiPassword" | base64
        For example, the resulting value is c3BpdXNlcjpwYXNzdzByZA== with the default spiuser:passw0rd combination.
    3. Ensure that the Oracle ojdbc8 driver (ojdbc8.jar) is still in the same location where the Docker Compose file (docker-compose.yml) is located. If it is not, place a copy there.
    4. Start the HCL Commerce live environment.
      Run docker-compose up -d.
    5. Verify that all of the Docker containers are up and healthy.
      Run docker-compose ps.

Results

Your production environment is now running via the Docker Compose deployment method.

What to do next

  1. Build your Search index. For information on building your Search index, see Building the HCL Commerce Search index.
  2. Access your new environment tools:
    • Management Center for HCL Commerce: https://commerceHost:8000/lobtools
    • The Aurora B2C starter store: https://commerceHost:8443/wcs/shop/en/auroraesite
    • The Aurora B2B starter store: https://commerceHost:8443/wcs/shop/en/aurorab2besite