Dockerize Your Java Application

Container Technologies (especially Docker) are one of the hottest trends for deploying apps right now. This story will explain how to deploy Java application using Docker (in a very simple case). For those who are not familiar with container technologies, you can look at this story for introduction.
Without any further ado, let me explain my 5 simple steps 🙂.
1. Install Your Docker
Install your favorite version of docker (if you don’t have it yet), you can follow this instruction.
2. Coding Your Application
Next, you can just coding, test, and build your application as usual. For example, I made a simple http API using spring boot.
3. Write Your Dockerfile
A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. [source]
Create a file (name it Dockerfile) in the root project directory, for example, if you use maven, you can put the file together with pom.xml.

Next, write some code in your Dockerfile
First line, FROM openjdk:8u181 means that our image will be built on the top of openjdk image version 8u181. There are various version provided, you can check Docker Hub, or you can use Oracle Server JRE (with smaller footprint).
Second line, ADD target/docker-example-0.0.1-SNAPSHOT.jar /opt/docker-example-0.0.1-SNAPSHOT.jar means we take the docker-example-0.0.1-SNAPSHOT.jar file that is generated from the maven build process and put it in the container image in /opt directory.
Third line, ENTRYPOINT sets the command and parameters that will be executed first when a container is run. If there are other options (e.g Xms, Xmx), we can add here.
For more info about Dockerfile please see official docs.
4. Build Your Image
If you don’t have a docker machine, you need to install docker-machine first, actually you can just simply download the latest binary release and move it to bin directory (for unix-like system). And next create new machine, if using virtualbox driver, you can run this command below.
docker-machine create --driver virtualbox docker-vbox && docker-machine env docker-vboxNext, you can build your image using docker build command.
docker build -t YOURIMAGENAME:VERSION .For example…
docker build -t ard333.com/docker-example:0.0.1-SNAPSHOT .Before you run the command above, you must be in the root project directory, and don’t forget the dot at the end of the command, that means the build process is done in the current directory, the directory with Dockerfile in it. After the process is complete, you can see your image in your local repository.

You can push your image to remote repository like Docker Hub, Public Cloud Container Registry (e.g. GCP, AWS), or your own Private Docker Registry using docker push command.
5. Run Your Container
Next, you can run your container by running the command below.
docker run --name my-docker-example -p 9999:8080 -d ard333.com/docker-example-p option means you publish a container port (mine is 8080) to the host (I chose 9999). -d means you are running container in background. For more info about docker run command, please see official docs.
You can see a list of running container with the docker ps command.

If your container STATUS is up, you can check whether the application is running properly.

Done 👍
I hope this story can be a good introduction for those just starting out using Java and Container Technology. Thanks for reading (Sorry For My Bad English 😅) and feel free to comment.
In the next story, I will write about Spring Cloud Kubernetes, because a few weeks ago that project has been graduated from the incubation process.
Are you looking for information about remote work?
or have a cool resource about remote work?
remotework.FYI is a collaboration platform for remote work resources,
find and share cool resources right now.
