In this tutorial we will learn how to use Templates on OpenShift, taking as example a simple application which uses the CakePHP framework. This framework consists of a MySQL and PHP set of Images that will deploy a basic Web application.
Step 1: Download the GitHub repository
Firstly, you need a GitHub repository which includes a PHP application. The repository will be used as Source to build the Container image of the CakePHP application.
Head to this repository which contains both OpenShift templates and a sample PHP application: https://github.com/sclorg/cakephp-ex
Fork a copy of the repository locally, so that you can modify the Web application. ( We will cover this point in the second part of this tutorial). For example, in my case, this is the clone of the repository I’m using:
git clone https://github.com/fmarchioni/cakephp-ex.git
Then, before creating resources, make sure you create a namespace for your example:
oc new-project php-demo
Great! now let’s start creating resources.
Step 2: Create an OpenShift application
Firstly, we will deploy the CakePHP-MySQL Template in the current namespace. You can do that with the following command:
$ oc create -f openshift/templates/cakephp-mysql.json template.template.openshift.io/cakephp-mysql-example created
If you check the above JSON file, you will see that it includes several parameters. One of them is the GitHub Repository of the PHP application:
$ oc describe template cakephp-mysql-example . . . . Name: SOURCE_REPOSITORY_URL Display Name: Git Repository URL Description: The URL of the repository with your application source code. Required: true Value: https://github.com/sclorg/cakephp-ex.git
As you can see, if we don’t set it, the default Repository will be used instead. To learn how to manage Template parameters, we will create a new application which sets our own Fork Repository.
Create a new OpenShift application as follows:
$ oc new-app --template=cakephp-mysql-example -p SOURCE_REPOSITORY_URL=https://github.com/fmarchioni/cakephp-ex
Then, wait until all Pods are available. Finally, check the Route to test our application:
$ oc get route NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD cakephp-mysql-example cakephp-mysql-example-php-demo.apps-crc.testing cakephp-mysql-example
Verify that the application is available at that Route address:

Finally, to clean up the resources from this example you can run the following commands:
# delete all application resources oc delete all --all # delete the opaque secret oc delete secret cakephp-example # delete the openshift template oc delete template cakephp-mysql-examp
How to customize the CakePHP Template
In order to modify the OpenShift template of our application we need to edit the file cakephp-mysql.json which contains the Resources for our CakePHP application.
For example, we will add another Template parameter “WELCOME” that our application will use:
{ "name": "WELCOME", "displayName": "Welcome message", "description": "The welcome message.", "value": "Hello there" }
Then, we need to provide the above parameter to the DeploymentConfig of the application. Search for the cakephp-mysql-example DeploymentConfig and include the WELCOME environment variable in it:
"spec": { "containers": [ { "name": "cakephp-mysql-example", "image": " ", "ports": [ { "containerPort": 8080 } ], . . . . . }, "env": [ { "name": "WELCOME", "value": "${WELCOME}" },
If you have deleted your Template at the end of the first example, make sure you are creating it again:
oc create -f openshift/templates/cakephp-mysql.json
Then, our PHP application must be able to read the above Parameter as Environment variable. For example, edit the src/Template/Layout/default.ctp and replace the static H1 Header with the following one:
<hgroup> <h1><?= getenv("WELCOME") ?> </h1> </hgroup>
Commit the above change in your GitHub Fork before creating again your application.
Finally, re-create your application including the additional Template parameter “WELCOME”:
oc new-app --template=cakephp-mysql-example -p SOURCE_REPOSITORY_URL=https://github.com/fmarchioni/cakephp-ex -p WELCOME=Buongiorno
As you can see from the new CakePHP Home page, the WELCOME parameter displays in the Header:

Conclusion
In this tutorial, we have explored how to use OpenShift templates, with a specific focus on the CakePHP template as an example. OpenShift templates provide a powerful and efficient way to define, manage, and deploy complex applications within an OpenShift cluster. By following the steps outlined in this tutorial, you should now have a solid understanding of the key concepts and processes involved in using OpenShift templates with CakePHP or similar applications.