A simple example to do practise of how to use docker-compose.yml file in fabric8-maven-plugin to generate Kubernetes/Openshift resource descriptors.
Lets deploy a Springboot Java application with Docker Compose file using Fabric8 Maven Plugin to Kubernetes or OpenShift.
- Linux or MacOS or Windows
- JDK 1.7+ - JDK Quick Installation Guide
- Maven 3.x+ - Maven Installation Guide
- Kompose - Kompose Installation Guide
1. Clone the example project from GitHub
$ git clone https://github.com/piyush1594/kompose-maven-example.git
Change current directory to kompose-maven-example
directory.
$ cd kompose-maven-example
2. Add Fabric8 Maven Plugin to your project
$ mvn io.fabric8:fabric8-maven-plugin:3.5.28:setup
Adds the Fabric8 Maven Plugin configuration to pom.xml
of project. pom.xml
is manifest or deployment descriptor file of a maven project.
3. Install Kompose through Maven
$ mvn fabric8:install
This command installs the kompose
on the host.
4. Configure Fabric8 Maven Plugin to use a Docker Compose file
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<configuration>
<composeFile>path for docker compose file</composeFile>
</configuration>
<executions>
<execution>
<goals>
<goal>resource</goal>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
Add the <configuration>
and <executions>
sections to pom.xml
as shown in above pom.xml
snippet. Update the <composeFile>
to provide the relative path of Docker Compose file from pom.xml
5. Deploy application on Kubernetes or OpenShift
Make sure that Kubernetes/OpenShift cluster or Minikube/minishift is running. In case, if anything of this is not running, you can run minishift to test this application by using following command.
$ minishift start
Below command deploys this application on Kubernetes or OpenShift.
$ mvn fabric8:deploy
Now that your service has been deployed, let's access it by querying pod
, service
from Kubernetes or OpenShift.
$ oc get pods
NAME READY STATUS RESTARTS AGE
springboot-docker-compose-1-xl0vb 1/1 Running 0 5m
springboot-docker-compose-s2i-1-build 0/1 Completed 0 7m
$ oc get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
springboot-docker-compose 172.30.205.137 <none> 8080/TCP 6m
Lets access the Springboot service.
$ minishift openshift service --in-browser springboot-docker-compose
Created the new window in existing browser session.
It will open your application endpoint in default browser.