Deploy Application using Docker Container on SAP Cloud Foundry : 2020
Hi All, this blog is around the deployment of an application using Docker Container on SAP Cloud Foundry(CF). I was working on a project where we wanted to deploy an application using Docker Container on SAP CF. I searched blogs, but either they were not complete or they were depreciated with old steps or syntax. I really got confused but was finally able to complete this task. I thought of sharing these latest working steps with updated syntax, so no one faces the issues like I did.
So, before starting I am assuming a few things, you can take them as initial requirements.
- Docker Desktop is Installed
- SAP CF CLI installed
- You have App ready for deployment
What will we do?
We will majorly go through below 4 steps to achieve our requirement.
- Build Docker Image
- Test the Docker Image
- Push Docker Image to Docker Hub
- Use Docker Hub Repo to deploy Image on CF
Build Docker Image
Step1: Start/Run Docker Desktop on your system.
Step2: Let’s check if everything is working fine.
Use Command: docker -v
You should see the version of the installed Docker.
Step3: Navigate to the Folder/Location where you have your Docker Image.
So, if you don’t have one with you, then you can use my sample Node App with Docker File.
GIT Link: https://github.com/brutecoder/docker-node-hello-world
Pull this / download and navigate inside the folder.
Note: I’ll share the link to my blog on, Creation of Docker file for your application soon.
Use Command: docker build -t=”docker_node_helloworld” .
Note: Don’t miss “.” at last, its part of the syntax.
Docker will download all required packages, may take some time, will see something like below once finished, built.
Step4: Let’s check the created docker image. Use Command: docker images
We can see our Docker Image: docker_node_helloworld
Test Docker Image
Now we have a Docker Image of our Application. Let’s test this image before deploying it to SAP CF.
Step1: Let’s first check the Docker Container.
Use Command: docker container ls
So, right now nothing is running, so so entries here.
Step2: Let’s test our Docker Image & see for any error.
Use Command: docker run -p 4000:4000 docker_node_helloworld
So, we can see the App is running & we can access the app via URL: http://localhost:4000/ in any browser.
Step3: So, we have tested the image now we can stop this instance.
Use Command: docker container ls
Copy Container ID (here its : f45a4ebdd297) & Use Command : docker stop f45a4ebdd297
Container is successfully stopped.
Push Docker Image to Docker Hub
We have created & tested Docker Image now let’s deploy it to Docker Hub.
Step1: Create an account on Docker Hub: https://hub.docker.com/
Step2: Let’s check the Docker Hub account, go to the terminal.
Use Command: docker login
Enter your credentials & you should get Login Succeeded message.
Step3: Tag your docker image.
Use Command : docker tag docker_node_helloworld kachiever/my_docker_image_v1
Note: Here, kachiever is my Docker Hub Username. You should use your username.
Step4: Let’s push our Docker image to Docker Hub.
Use Command : docker push kachiever/my_docker_image_v1
Step5: Go to https://hub.docker.com/ & Confirm your push.
Push to SAP Cloud Foundry
Now the image is pushed to Docker hub, time to push it to Cloud Foundry. I am assuming you have SAP CF account & have CLI setup on your local machine.
Step1: Let’s check our API Endpoint of our SAP Cloud Foundry Account.
As shown above, my Endpoint is: https://api.cf.eu20.hana.ondemand.com.
Step2: So, I will set this endpoint for my CLI on the terminal.
Use Command : cf api https://api.cf.eu20.hana.ondemand.com
Step3: Now, we are hitting the correct endpoint. Lets login to our CF Account.
Use Command: cf login
Now enter your credentials: EmailID & Password to log in.
Step4: Time to push our Docker image to CF
So, the syntax is :
cf push <App Name> –docker-image <Docker Image Repository:TagName> –docker- username <docker username>
Use Command : cf push my_docker_appv1 –docker-image kachiever/my_docker_image_v1:latest –docker-username kachiever
Note : There are 2 hyphens (“–“), in front of docker-image & docker-username. They change into single hyphen when I publish this blog(some bug with website).
Its will ask for your Docker Account Password, enter that & push will start.
Step5: Now let’s confirm it, go to you CF account & look for my_docker_appv1
So, we can see App has been deployed & is in Started state.
Step6: Click on the app & you will see Application Overview Screen with URL of the deployed application.
Now, just open this link & you should see the output: Hello World, confirming that app is running as expected.
Congratulations, now you know how to deploy any Application using Docker Container on SAP Cloud Foundry. We now know, how to create Docker Image, how to test it locally & finally how to deploy it to our SAP Cloud Foundry Account so it can be used globally. Hope it will help those who have started working with docker, this blog will help in hassle-free deployment of your application using Docker Container.
Hi Kapil, very interesting this approach with Cloud Foundry and Docker. However, is it possible to bind and consume service instances (like HDI Containers, Application Logging, Enterprise Messages, etc) to applications that run in the docker container in SCP CF?
Hi Fabiano, yes its possible to do that. Think its as any other deployed application, if they can consume, so can your docker deployed application.
Thanks Kapil, I will try to do some tests with this scenario.
Hi Kapil - is there an ERP Docker image available for use? tx
Instead of dockerhub, is there a possibility to use SAP internal docker repositories for SAP internal development?
Thanks in advance
In this blog you mentioned that you are going to share about Creation of Docker file soon. I'm eager to know whether is there any blog or help document which helps to know about it.
Also, is it possible to create docker image and make it reside in docker hub for SAP UI5 standalone/mta based applications? If yes, please share any link for it too.
I really appreciate the way you wrote this blog.
Thanks and Regards,