PSD2 Developer Ecosystem - Jenkins Docker CI/CD Part 1

PSD2 Developer Ecosystem - Jenkins Docker CI/CD Part 1

Thanks to the recent explosion in popularity and advancements in modern containerization capabilities, organizations are adopting and utilizing container technology on a scale never seen before. Pair this with significant updates in Jenkins 2.0+ to include pipeline as code and support for all things docker, and the process of creating a lightweight CI/CD pipeline utilising containers has become much easier to achieve for the average user.

In this article, we will look at dockerizing the PSD2 Developer Ecosystem application, and in our next article we will look at using this dockerized ecosystem in a CI/CD scenario using Jenkins.

PSD2-Docker-Compose-01

Why Dockerize the PSD2 Developer Ecosystem?

The PSD2 Developer Ecosystem was a perfect candidate for dockerization as it was already designed to be lightweight, modular and uses standard tools and utilities such as Java, Maven and Tomcat - many of which already have freely available base images in the Docker Store.

The the main reasons for dockerizing the ecosystem are:

  • The ability for users to quickly roll out multiple instances of the ecosystem with a minimum amount of time/effort and minimal resource usage.
  • Each instance of the ecosystem may contain different configurations and data sets to represent different scenarios, allowing for quick onboarding of multiple clients, or for quickly testing multiple scenarios at one time to increase testing coverage.
  • Dockers ability to allow for quick and complete teardown of an instance allows for very quick cycles during testing with the ability to rapidly return to a known state.

Dockerizing the PSD2 Developer Ecosystem

We began by breaking down and dockerizing the components of the ecosystem by identifying appropriate base images, putting our project resources in place and creating Dockerfiles for each component. The result was 5 Docker images, each representing a component of the ecosystem as follows:

  • Sandbox Component
    • Tomcat based container running the accounts and payments sandboxes
  • Portus Integrate Component.
    • OpenSUSE based container running the Portus Integrate Server.
  • Oauth Component
    • Java based container running the MITREid Connect implementation of OpenID Connect and OAuth 2.0.
  • Database Components
    • Two MySQL database base images, initialised via a Docker Compose file. One to hold the sandbox data, and the second to hold the OAuth Server data.

psd2-dockerized-ecosystem-logos-01

Once we had each component templated, we created a compose file to bring everything together and used the Docker Compose orchestration tool to bring up the components as a single networked instance of the ecosystem.

The flexibility of Docker and Docker Compose allowed us to utilize some simple custom scripts that execute Docker commands and reference a port mapping file to stand up multiple instances of the dockerized ecosystem on the same host.

The following video covers this process in more detail:

 PSD2 Developer Ecosystem - Jenkins & Docker CI/CD - Part 1

In the next article, we will look at using the Dockerized PSD2 Developer Ecosystem in a CI\CD scenario using Jenkins.