Home >Java >javaTutorial >How to use Dockerfile to create an image of the java running environment
The current environment used is:
Create the corresponding file directory in the /app directory.
[root@node2 /app/]# mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}} -pv [root@node2 /app]# cd dockerfile/system/centos/ [root@node2 /app/dockerfile/system/centos]# mkdir centos-7.5-base [root@node2 /app/dockerfile/system/centos]# cd centos-7.5-base
Create a dockerfile file
[root@node2 /app/dockerfile/system/centos/centos-7.5-base]#vim dockerfile #nginx base image from centos:7.5.1804 label maintaier "mr.luo <mr.luo@dklwj.com>" run yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
Create a direct docker build script and then execute the script directly
[root@node2 /app/dockerfile/system/centos/centos-7.5-base]#vim build-command.sh #!/bin/bash docker build -t 172.20.7.50/baseimages/centos-base:7.5.1804 .
Execute the script to create a new image
[root@node2 /app/dockerfile/system/centos/centos-7.5-base]#bash build-command.sh sending build context to docker daemon 3.072kb step 1/3 : from centos:7.5.1804 ---> 76d6bc25b8a5 step 2/3 : label maintaier 'mr.luo@dklwj.com' ---> using cache ---> 05ccd970d71d step 3/3 : run yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop ---> using cache ---> 73d683a54877 successfully built 73d683a54877 successfully tagged 172.20.7.50/baseimages/centos-base:7.5.18042. Use the prepared basic environment image to create a jdk image
Exit from centos-7.5-base and create a jdk1.8 directory in the current directory.
[root@node2 /app/dockerfile/system/centos/centos-7.5-base]# cd .. [root@node2 /app/dockerfile/system/centos]# mkdir jdk1.8 [root@node2 /app/dockerfile/system/centos]# cd jdk1.8/
Create dockerfile
[root@node2 /app/dockerfile/system/centos/jdk1.8]#vim dockerfile from 172.20.7.50/baseimages/centos-base:7.5.1804 label maintainer "mr.luo <mr.luo@dklwj.com>" add jdk-8u162-linux-x64.tar.gz /usr/local/src/ run ln -s /usr/local/src/jdk1.8.0_162/ /usr/local/jdk add profile /etc/profile env java_home /usr/local/jdk env jre_home $java_home/jre env classpath $java_home/lib/:$jre_home/lib/ env path $path:$java_home/bin run rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/asia/shanghai /etc/localtime && echo "asia/shanghai" > /etc/timezone
Upload the jdk package to the current directory:
Copy the /etc/profile file to the current directory
[root@node2 /app/dockerfile/system/centos/jdk1.8]#cp profile /etc/profile
Add jdk at the end of the profile Environment variables
[root@node2 /app/dockerfile/system/centos/jdk1.8]#vim profile export java_home=/usr/local/jdk export tomcat_home=/apps/tomcat export path=$java_home/bin:$java_home/jre/bin:$tomcat_home/bin:$path export classpath=.$classpath:$java_home/lib:$java_home/jre/lib:$java_home/lib/tools.jar
Create docker build shell script
[root@node2 /app/dockerfile/system/centos/jdk1.8]#vim build-command.sh #!/bin/bash # docker build -t 172.20.7.50/baseimages/centos7.5-jdk:8.162 .
Start making the image
[root@node2 /app/dockerfile/system/centos/jdk1.8]#bash build-command.sh sending build context to docker daemon 189.8mb step 1/10 : from 172.20.7.50/baseimages/centos-base:7.5.1804 ---> 73d683a54877 step 2/10 : label maintainer "mr.luo <mr.luo@dklwj.com>" ---> running in 65604dd1f392 removing intermediate container 65604dd1f392 ---> c4720603ce38 step 3/10 : add jdk-8u162-linux-x64.tar.gz /usr/local/src/ ---> bc98adffe1b4 step 4/10 : run ln -s /usr/local/src/jdk1.8.0_162/ /usr/local/jdk ---> running in df5a6f67f9fd removing intermediate container df5a6f67f9fd ---> 0ae1af0416c6 step 5/10 : add profile /etc/profile ---> eee23a69c0c8 step 6/10 : env java_home /usr/local/jdk ---> running in edbef8563e83 removing intermediate container edbef8563e83 ---> 5f783f642054 step 7/10 : env jre_home $java_home/jre ---> running in fa0e5f08e732 removing intermediate container fa0e5f08e732 ---> 28a4d31463d4 step 8/10 : env classpath $java_home/lib/:$jre_home/lib/ ---> running in 3c4ebb04ac62 removing intermediate container 3c4ebb04ac62 ---> 245f2dd82d52 step 9/10 : env path $path:$java_home/bin ---> running in 4f5e6093f0a9 removing intermediate container 4f5e6093f0a9 ---> 5be0e6261eea step 10/10 : run rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/asia/shanghai /etc/localtime && echo "asia/shanghai" > /etc/timezone ---> running in 52d8cb8463a8 removing intermediate container 52d8cb8463a8 ---> 9fb867ae8c39 successfully built 9fb867ae8c39 successfully tagged 172.20.7.50/baseimages/centos7.5-jdk:8.162
View the files in the current directory
[root@node2 /app/dockerfile/system/centos/jdk1.8]#ls build-command.sh dockerfile jdk-8u162-linux-x64.tar.gz profile
Check the made image Whether it can be used normally
[root@node2 /app/dockerfile/system/centos/jdk1.8]#docker run -it --rm 172.20.7.50/baseimages/centos7.5-jdk:8.162 bash [root@919844b164dc /]# java -version java version "1.8.0_162" java(tm) se runtime environment (build 1.8.0_162-b12) java hotspot(tm) 64-bit server vm (build 25.162-b12, mixed mode) [root@919844b164dc /]# date thu nov 22 21:17:49 cst 2018 [root@919844b164dc /]# exit exit3. Make a tomcat image
Enter the previously built /app/dockerfile/web/tomcat and create a tomcat -base directory
[root@node2 ~]# cd /app/dockerfile/web/tomcat [root@node2 /app/dockerfile/web/tomcat]#mkdir tomcat-base
Create dockerfile
[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#vim dockerfile from 172.20.7.50/baseimages/centos7.5-jdk:8.162 label maintainer "mr.luo <mr.luo@dklwj.com>" run mkdir /apps add apache-tomcat-8.5.33.tar.gz /apps run ln -s /apps/apache-tomcat-8.5.33 /apps/tomcat
Create docker build script
[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#vim build-command.sh #!/bin/bash docker build -t 172.20.7.50/baseimages/centos-tomcat:8.5.33 .
Execute to create the image file:
[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#bash build-command.sh sending build context to docker daemon 9.625mb step 1/5 : from 172.20.7.50/baseimages/centos7.5-jdk:8.162 ---> 9fb867ae8c39 step 2/5 : label maintainer "mr.luo <mr.luo@dklwj.com>" ---> running in 9ce6fc4d2850 removing intermediate container 9ce6fc4d2850 ---> b68755061b28 step 3/5 : run mkdir /apps ---> running in b483c6b127f2 removing intermediate container b483c6b127f2 ---> 605c1a048a5f step 4/5 : add apache-tomcat-8.5.33.tar.gz /apps ---> 3c44f96ed41c step 5/5 : run ln -s /apps/apache-tomcat-8.5.33 /apps/tomcat ---> running in 4c1aa39a6c92 removing intermediate container 4c1aa39a6c92 ---> 9b3bc4f58cc9 successfully built 9b3bc4f58cc9 successfully tagged 172.20.7.50/baseimages/centos-tomcat:8.5.33
Use the created image to start a container Check whether it is successfully created, add -p to expose the port when starting, and test it on the physical machine
[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#docker run -it -p 8802:8080 172.20.7.50/baseimages/centos-tomcat:8.5.33 bash [root@917b2c2262a3 /]# cd /apps/ [root@917b2c2262a3 apps]# ll total 0 drwxr-xr-x 9 root root 220 nov 22 22:08 apache-tomcat-8.5.33 lrwxrwxrwx 1 root root 26 nov 22 22:08 tomcat -> /apps/apache-tomcat-8.5.33 [root@917b2c2262a3 apps]# ./tomcat/bin/catalina.sh start using catalina_base: /apps/tomcat using catalina_home: /apps/tomcat using catalina_tmpdir: /apps/tomcat/temp using jre_home: /usr/local/jdk/jre using classpath: /apps/tomcat/bin/bootstrap.jar:/apps/tomcat/bin/tomcat-juli.jar tomcat started.
Test with the browser on the client
The above is the detailed content of How to use Dockerfile to create an image of the java running environment. For more information, please follow other related articles on the PHP Chinese website!