Java Kubernetes (4 Part Series)
1 Kubernetes for Java Developers – Setup
2 Kubernetes for Java Developers – Creating a docker image
3 Kubernetes for Java Developers – Deploy Application
4 Kubernetes for Java Developers – Debug Application
Welcome back
On first tutorial of this series, we learn about set up a local kubernetes environment.
At this point, we have a Java application that uses a mysql database running on docker.
To package our application inside a docker image, we need to create a Dockerfile.
Create a Dockerfile
Dockerfile definition:
<span>FROM openjdk:11.0.3-jdk-slim</span><span>RUN mkdir /usr/myapp</span><span>COPY target/java-kubernetes-0.0.1-SNAPSHOT.jar /usr/myapp/app.jar</span><span>WORKDIR /usr/myapp</span><span>EXPOSE </span><span>8080</span><span>CMD ["java", "-Xms128m", "-Xmx256m", "-jar", "app.jar"]</span><span>FROM openjdk:11.0.3-jdk-slim</span> <span>RUN mkdir /usr/myapp</span> <span>COPY target/java-kubernetes-0.0.1-SNAPSHOT.jar /usr/myapp/app.jar</span> <span>WORKDIR /usr/myapp</span> <span>EXPOSE </span><span>8080</span> <span>CMD ["java", "-Xms128m", "-Xmx256m", "-jar", "app.jar"]</span>FROM openjdk:11.0.3-jdk-slim RUN mkdir /usr/myapp COPY target/java-kubernetes-0.0.1-SNAPSHOT.jar /usr/myapp/app.jar WORKDIR /usr/myapp EXPOSE 8080 CMD ["java", "-Xms128m", "-Xmx256m", "-jar", "app.jar"]
Enter fullscreen mode Exit fullscreen mode
Use Make to automate tasks
Make is a tool which controls the generation of executables and other non-source files of a program from the program’s source files.
We will use make to automate maven and docker commands in this project.
Check your make installation. Type make --version
on terminal. If none happens, please install make before continue.
Create a Makefile
Creating a Makefile on the same Dockerfile directory.
Check out the complete Makefile on github: https://github.com/sandrogiacom/java-kubernetes/blob/master/Makefile
The importance parts are:
build:mvn clean <span>install</span><span>;</span> <span>\</span>docker build <span>--force-rm</span> <span>-t</span> java-k8s <span>.</span>run-db:make stop-db<span>;</span> <span>\</span>make rm-db<span>;</span> <span>\</span>docker run <span>--name</span> mysql57 <span>-p</span> 3306:3306 <span>-e</span> <span>MYSQL_ROOT_PASSWORD</span><span>=</span>123456 <span>-e</span> <span>MYSQL_USER</span><span>=</span>java <span>-e</span> <span>MYSQL_PASSWORD</span><span>=</span>1234 <span>-e</span> <span>MYSQL_DATABASE</span><span>=</span>k8s_java <span>-d</span> mysql/mysql-server:5.7run-app:make stop-app<span>;</span> <span>\</span>make rm-app<span>;</span> <span>\</span>docker run <span>--name</span> myapp <span>-p</span> 8080:8080 <span>-d</span> <span>-e</span> <span>DATABASE_SERVER_NAME</span><span>=</span>mysql57 <span>--link</span> mysql57:mysql57 java-k8s:latestbuild: mvn clean <span>install</span><span>;</span> <span>\</span> docker build <span>--force-rm</span> <span>-t</span> java-k8s <span>.</span> run-db: make stop-db<span>;</span> <span>\</span> make rm-db<span>;</span> <span>\</span> docker run <span>--name</span> mysql57 <span>-p</span> 3306:3306 <span>-e</span> <span>MYSQL_ROOT_PASSWORD</span><span>=</span>123456 <span>-e</span> <span>MYSQL_USER</span><span>=</span>java <span>-e</span> <span>MYSQL_PASSWORD</span><span>=</span>1234 <span>-e</span> <span>MYSQL_DATABASE</span><span>=</span>k8s_java <span>-d</span> mysql/mysql-server:5.7 run-app: make stop-app<span>;</span> <span>\</span> make rm-app<span>;</span> <span>\</span> docker run <span>--name</span> myapp <span>-p</span> 8080:8080 <span>-d</span> <span>-e</span> <span>DATABASE_SERVER_NAME</span><span>=</span>mysql57 <span>--link</span> mysql57:mysql57 java-k8s:latestbuild: mvn clean install; \ docker build --force-rm -t java-k8s . run-db: make stop-db; \ make rm-db; \ docker run --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=java -e MYSQL_PASSWORD=1234 -e MYSQL_DATABASE=k8s_java -d mysql/mysql-server:5.7 run-app: make stop-app; \ make rm-app; \ docker run --name myapp -p 8080:8080 -d -e DATABASE_SERVER_NAME=mysql57 --link mysql57:mysql57 java-k8s:latest
Enter fullscreen mode Exit fullscreen mode
build: Run maven and create a docker image with the name “java-k8s”
run-db: Start a new mysql database container
run-app: Start a new application container
In this order, type:
make buildmake run-dbmake run-appmake build make run-db make run-appmake build make run-db make run-app
Enter fullscreen mode Exit fullscreen mode
Obs: Wait 30 seconds between run:db
and run:app
to make time to start up database.
To see logs of applicaton, type:
docker logs <span>-f</span> myappdocker logs <span>-f</span> myappdocker logs -f myapp
Enter fullscreen mode Exit fullscreen mode
And CTRL+C
to exit log mode.
Type docker ps
to see the containers running
Check
http://localhost:8080/persons
To stop applicaton and database, type:
make stop-appmake stop-dbmake stop-app make stop-dbmake stop-app make stop-db
Enter fullscreen mode Exit fullscreen mode
Please clone the complete demo app at:
https://github.com/sandrogiacom/java-kubernetes
Have fun!
See you on the next part. Deploy your app into kubernetes cluster.
Java Kubernetes (4 Part Series)
1 Kubernetes for Java Developers – Setup
2 Kubernetes for Java Developers – Creating a docker image
3 Kubernetes for Java Developers – Deploy Application
4 Kubernetes for Java Developers – Debug Application
原文链接:Kubernetes for Java Developers – Creating a docker image
暂无评论内容