Deploy containers to on-premises and hybrid clouds with IBM and Docker

In this post, we describe how you can quickly and continuously develop and deploy hybrid multi-tier and multi-container applications to on-premises and public clouds using IBM and Docker products.

IBM is Docker Inc.’s lead-with partner to bring containers technology to the Enterprise. IBM has integrated its UrbanCode DevOps offerings with the new Docker Trusted Registry product to enable multi-platform and multi-container deployments. Additionally, IBM is wrapping Docker Trusted Registry with its world-class support that enterprise customers highly value. Read more about IBM and Docker partnership here.

We built this hybrid and on-premises cloud deployment demo for the IBM booth at DockerCon 2015 with the following products:

An Enterprise Hybrid Cloud Application

In the demo, we describe the development and deployment of an e-commerce application (The Store) that consists of a Node.js front-end Docker container running on IBM Containers in Bluemix, and a multi-container back-end deployed with Docker Swarm on-premises.  The figure below shows this hybrid architecture.


The front-end container uses the IBM Bluemix Secure Gateway Service to communicate with the back-end running in the on-premises infrastructure. As a first-class citizen in Bluemix, the container can also consume any of the other Bluemix services (such as cache, analytics, and email), as needed by the application as it evolves to meet new business requirements.

Easily configure Docker builds and deployments

UrbanCode Build and UrbanCode Deploy enhance developer productivity by enabling automated processes to quickly build and continuously deploy the application components to fully on-premises or hybrid environments. The UrbanCode products also provide easy-to-use and intuitive features for orchestration, visibility, and control of the automation processes that add value over command-line-only based workflows.

We model the Store Application in UrbanCode Deploy using the following containerized Components:

  • Front-end: Node.js
  • Back-end: WebSphere Application Server
  • Back-end: DB2
  • Back-end: MySQL

In UrbanCode Deploy, you can define different deployment Environments for an application, such as those representing on-premises, staging, production, and hybrid areas.

For the Store Application, we defined one Environment to deploy all 4 Components to an on-premises Swarm cluster, and defined another Environment to deploy the front-end container to IBM Containers in Bluemix and the three back-end containers to the on-premises Swarm cluster, as shown below.

UrbanCode Deploy also provides a graphical editor application to define the deployment processes for the Application and its Components.


Updating and deploying the application with UCD, DTR, and Bluemix

As part of the demo scenario for updating and redeploying the Store, we highlight the following DevOps process (the numbered steps correspond to the figure below).

  1. Developer changes the application and pushes it to the Git repository.
  2. UrbanCode Build is notified of the Git commit containing the updated code.
  3. UrbanCode Build packages the software into a new Docker image and pushes it to the on-premises Docker Trusted Registry instance.
    The new UrbanCode Deploy plugin then imports the updated image version for the application component.
  4. UrbanCode Deploy pushes the image for the front-end component to the IBM Containers Registry in Bluemix.
  5. UrbanCode Deploy starts the back-end Docker containers in the on-premises Docker Swarm cluster.
    UrbanCode Deploy starts the front-end Docker container on IBM Containers in Bluemix.


IBM UrbanCode Deploy provides enterprise grade automation, orchestration, management, visibility and control capabilities for the application development and deployment process, where an application can include software components hosted in bare metal, virtual machines or containers.

In the DockerCon demo recording we also show the use of an approval process in UrbanCode Deploy, which can gate the deployment of new software versions to an environment such as production only with the explicit action of a specific user role in the organization.


We showed how a multi-tiered and multi-container application could be quickly developed on-premises and continuously deployed to both an on-premises Docker Swarm cluster and an off-premises cloud environment such as IBM Containers in Bluemix. We used the enterprise features of IBM UrbanCode Build and IBM UrbanCode Deploy along with the new IBM-supported Docker Trusted Registry offering as the trusted repository for Docker images.

IBM UrbanCode products integrate with Docker Trusted Registry, as well as orchestrate and automate the deployment of multiple containers to multiple cloud environments as part of a typical DevOps pipeline. We also demonstrated how an application running in IBM Containers in Bluemix could securely connect to on-premises infrastructure using the Bluemix Secure Gateway service, with the potential to use the vast catalog of other Bluemix services.

For further details on the IBM UrbanCode Deploy plugins for Docker and IBM Containers in Bluemix, go to this link.

Please feel free to give us your feedback by posting your comments below, our aim is to help customers make the most of Docker containerization in their enterprise cloud environments!

Thanks to contributions from the following IBMers:

Sanjay Nayak, Noel Nihill, Michael Samano, Steve Hanley, Willie Duchenay, Kathy Girard

Share this post:

Share on LinkedIn

Add Comment

Leave a Reply

Your email address will not be published.Required fields are marked *


This is so cool! We can show the whole story with the strength of Docker and the simplicity of Bluemix! I will try to replicate this on my own environment!

Great work Team!!!



    Thanks JP


Sri Shetty

Excellent Sanjay, Thanks for putting this together.



    Thanks Sri

More Community Stories

BigInsights on Cloud: Where Critical Data Goes to Achieve Enterprise-Grade Security

IBM BigInsights on Cloud is an enterprise-ready Apache Hadoop distribution designed to enable analytics on larger volumes of data more cost-effectively. Earlier in this interview series, Rohan Vaidyanathan, offering manager for BigInsights on Cloud, introduced the service and explored specific use cases for big data projects. In this installment, Rohan is joined by Katherine Franklin, program director for security and compliance, to share some important security developments around BigInsights and other Cloud Data Services offerings.

Prepping your OpenWhisk code for GA

It’s been an exciting year as advances in serverless computing, and OpenWhisk in particular, have transformed the way that we can build our applications and APIs. Learn how to prep your code for the GA.

IBM Containers: A Bluemix Runtime Leveraging Docker Technology

IBM Containers allows users to deploy, manage, and run application components on the IBM Bluemix development platform, leveraging the open-source Docker container technology. IBM Bluemix now offers three infrastructure compute technology choices to deploy applications - Docker containers, OpenStack virtual machines, or Cloud Foundry apps. Designed for enterprise production workloads, IBM Containers can be securely deployed with integrated scalability and reliability, which enterprise customers rely upon. More...