基于Java+Tomcat的Docker镜像

 基于Java+Tomcat的Docker镜像 

Docker镜像好不好并不完全是大小的问题,我喜欢自己动手制作自己的镜像这样感觉比较安全;更加适合自己。 

系统环境:Centos6.5 

制作工具:febootstrap  

1、搭建一个内网源;在这个内网源主机上挂载上系统光盘:方便更新下载所有的包: 

详情可参考上一篇文章:http://www.58jb.com/html/66.html

本次制作一个Java与Tomcat结合的镜像:

一、建立一个目录,命令为Tomcat7

  1. mkdir Tomcat7  

切换到上面的Tomcat7目录下,把jdk-7u79-linux-x64.gz和apache-tomcat-7.0.68.tar.gz解压到当前目录:

目录下的文件有: 

  1. [root@centos tomcat7]# ls 
  2. apache-tomcat-7.0.68  Dockerfile  jdk1.7.0_79  start_tomcat.sh 

Dockerfile文件内容:

  1. FROM centos6.5 
  2. MAINTAINER swper <hz328@qq.com> 
  3. #Make java and tomcat install directory 
  4. RUN mkdir -p /usr/local/java && mkdir -p /data/tomcat 
  5. #Copy jre and tomcat into image 
  6. ADD jdk1.7.0_79 /usr/local/java 
  7. ADD apache-tomcat-7.0.68 /data/tomcat 
  8. ADD start_tomcat.sh start_tomcat.sh 
  9. #Expose http port 
  10. EXPOSE 8080 

start_tomcat.sh 文件内容:

  1. #!/bin/bash 
  2. #Date: 2016/08/24 
  3. #Desc: swper 
  4. #Start tomcat with docker containerstart.    
  5. echo "Start Tomcat ..." 
  6. # Export java path 
  7. export PATH=$PATH:/usr/local/java/bin 
  8. export TOMCAT_HOME=/data/tomcat 
  9. # Start tomcat 
  10. bash $TOMCAT_HOME/bin/catalina.sh run 

修改apache-tomcat-7.0.68/bin/catalina.sh文件内容:区别在于-Denv=dev【由于多套环境,所以这个要修改】,和内存配置大小;

  1. JAVA_OPTS="-server -XX:PermSize=1024m -XX:MaxPermSize=2048m -Denv=dev -Dfile.encoding=UTF-8" 

 删除Tomcat目录下的webapps下所有文件;可节省镜像打包后的大小;

  1. rm -rf rm -rf apache-tomcat-7.0.68/webapps/* 

 Build镜像:【名字可随意,可用tag重新命名】

  1. docker build -t tomcat7:dev . 

查看镜像: 

  1. [root@centos tomcat7]# docker images 
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE 
  3. tomcat709           latest              2b35c9249340        5 hours ago         590.5 MB 
  4. tomcat7             dev                 2b35c9249340        5 hours ago         590.5 MB 
  5. tomcat              v14                 d15e965a97e5        5 days ago          590.5 MB 
  6. tomcat704           latest              767036a52e4c        13 days ago         590.5 MB 
  7. centos6.5           latest              e0cf85ebb835        2 weeks ago         276 MB 

 使用方法:

在宿主机上创建相应目录:

  1. mkdir -p /data/{logs,webapps} 

webapps:存放Java项目

Logs: 存放Tomcat的日志

启动容器:

  1. docker run -it -d --name=w1 -p 8081:8080 -v /data/webapps/h5-server:/data/tomcat/webapps -v /data/logs:/data/tomcat/logs tomcat7:dev /bin/bash start_tomcat.sh 

启动后,访问地址:192.168.18.51:8081/h5-server即可访问到项目,日志就存储到/data/logs里了。不过日志有点延迟一秒左右;

可通过Nginx做反代直接跳到容器里:

如果出现容器内的时间不致可以再添加挂载一个文件到容器里:

在宿主机上定时同步互联网上的时间,这样再以只读方式挂载到容器即可解决;

  1. -v /etc/localtime:/etc/localtime:ro