z/OS Container Extensions (zCX) provides the ability to run Linux based containers alongside your existing z/OS Workload. When developing APIs using the z/OS Connect Designer being close to the test systems can ease the development process and access to those systems. In this blog post we’ll go through creating a development environment and running the designer ready to develop and test an API.
Development Environment
All the files that make up the API Project need to be stored in a directory that is volume mounted into the containers. In zCX the predefined volume AZD_SHARED_VOLUME
which is available at /media/azd_shared_volume
can be used to store the API project so we can create a directory here.
Source control and file editing
Configuration files for the API need to be edited outside of the Designer and the completed code should be stored in source control. As the zCX ssh environment doesn’t contain the tools required to do this we run another container with those tools installed that we can docker exec into and perform the required operations.
An example container image is available in this GitHub repository which makes vi and git available for editing files and adding them to a remote repository.
The container can be run using the command
docker run -d -n apiscm -v AZD_SHARED_VOLUME:/workspace/scm-container:latest
Then accessed using
docker exec -it apiscm bash
Running the Designer
Normally the Designer requires that the API Project is mounted at /workspace/project
but this isn’t possible within the zCX environment. To get around this we can specify the environment variable ZCON_DESIGNER_PROJECT
to point at the directory inside the AZD_SHARED_VOLUME
.
This means to run the designer we use the command
docker run -d -p 9080:9080 -v AZD_SHARED_VOLUME:/workspace/ -e ZCON_DESIGNER_PROJECT=/workspace/<api_dir> icr.io/zosconnect/ibm-zcon-designer:3.0.90
With all this in place the designer can be accessed at
http://zcx_hostname:9080/zosConnect/designer
and the instructions in the documentation can be followed to build and test the API.