Giter Club home page Giter Club logo

demo-docker's Introduction

demo-docker

How to create Docker Image and run Java App (Spring Boot Jar) in a Docker Engine | InterviewDot

Docker_Architecture

What is Docker ?

Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.

Benefits :

  1. Its working in my machine, and why its not working in your machine ? resolved "Build once and deploy anywhere".
  2. Docker containers can run on any platform AWS EC2, Google Cloud Platform, Rackspace, Virtual Box, etc.
  3. Docker images can be version controlled.
  4. Rapid deployment.

Screen Shot 2019-04-01 at 07 28 06

Difference between VMs and Docker Containers ?

vm vs containers

Install Docker in your computer :

https://hub.docker.com/editions/community/docker-ce-desktop-mac

Create a new Spring Boot Rest Project using https://start.spring.io/

Screen Shot 2019-04-01 at 06 44 59

Start the spring boot demo app :

$ mvn spring-boot:run

As usual, the application will be running on port 8080. To test this endpoint, navigate your browser (or use curl, postman, etc.) to "http://localhost:8080/docker/interviewdot", you will see a response.

Dockerizing the Spring Boot App :

Dockerfile – Specifying a file that contains native Docker commands to build the image A Dockerfile is just a regular .txt file that includes native Docker commands that are used to specify the layers of an image.

FROM java:8-jdk-alpine

COPY ./target/demo-docker-0.0.1-SNAPSHOT.jar /usr/app/

WORKDIR /usr/app

RUN sh -c 'touch demo-docker-0.0.1-SNAPSHOT.jar'

ENTRYPOINT ["java","-jar","demo-docker-0.0.1-SNAPSHOT.jar"]

Build the spring boot app docker image :

Vinoths-MBP:demo-docker vinothkumar$ docker build -t interviewdot:1 .
Sending build context to Docker daemon  16.96MB
Step 1/5 : FROM java:8-jdk-alpine
8-jdk-alpine: Pulling from library/java
709515475419: Pull complete 
38a1c0aaa6fd: Pull complete 
5b58c996e33e: Pull complete 
Digest: sha256:d49bf8c44670834d3dade17f8b84d709e7db47f1887f671a0e098bafa9bae49f
Status: Downloaded newer image for java:8-jdk-alpine
 ---> 3fd9dd82815c
Step 2/5 : COPY ./target/demo-docker-0.0.1-SNAPSHOT.jar /usr/app/
 ---> 9208a550a98b
Step 3/5 : WORKDIR /usr/app
 ---> Running in 31c435fa05a2
Removing intermediate container 31c435fa05a2
 ---> adc8c0999f8f
Step 4/5 : RUN sh -c 'touch demo-docker-0.0.1-SNAPSHOT.jar'
 ---> Running in 4894eb3036f0
Removing intermediate container 4894eb3036f0
 ---> a1b01ade8df8
Step 5/5 : ENTRYPOINT ["java","-jar","demo-docker-0.0.1-SNAPSHOT.jar"]
 ---> Running in fbb2e10ecae9
Removing intermediate container fbb2e10ecae9
 ---> fa4896fc6a0c
Successfully built fa4896fc6a0c
Successfully tagged interviewdot:1

List the docker built images :

Vinoths-MBP:demo-docker vinothkumar$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
interviewdot        1                   fa4896fc6a0c        38 seconds ago      178MB
java                8-jdk-alpine        3fd9dd82815c        2 years ago         145MB

Run the spring boot docker image :

Vinoths-MBP:demo-docker vinothkumar$ docker run -p 8080:8080 interviewdot:1

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)

2019-04-01 04:31:58.891  INFO 1 --- [           main] c.i.demodocker.DemoDockerApplication     : Starting DemoDockerApplication v0.0.1-SNAPSHOT on a01a869f87b2 with PID 1 (/usr/app/demo-docker-0.0.1-SNAPSHOT.jar started by root in /usr/app)
2019-04-01 04:31:58.894  INFO 1 --- [           main] c.i.demodocker.DemoDockerApplication     : No active profile set, falling back to default profiles: default
2019-04-01 04:32:00.105  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-04-01 04:32:00.173  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-04-01 04:32:00.174  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.16]
2019-04-01 04:32:00.187  INFO 1 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
2019-04-01 04:32:00.268  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-04-01 04:32:00.269  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1332 ms
2019-04-01 04:32:00.508  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-04-01 04:32:00.704  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-04-01 04:32:00.708  INFO 1 --- [           main] c.i.demodocker.DemoDockerApplication     : Started DemoDockerApplication in 2.252 seconds (JVM running for 2.605)
2019-04-01 04:32:06.782  INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-04-01 04:32:06.782  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-04-01 04:32:06.789  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms

Access the spring boot docker app in http://localhost:8080/docker/interviewdot :

Screen Shot 2019-04-01 at 06 56 14

Check docker containers running :

Vinoths-MBP:demo-docker vinothkumar$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5ffad5faf3cc        interviewdot:1      "java -jar demo-dock…"   10 seconds ago      Up 10 seconds       0.0.0.0:8080->8080/tcp   flamboyant_goldwasser

demo-docker's People

Contributors

net-vinothkumar avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.