一、准备好Jdk和Tomcat

apache-tomcat-8.5.50.tar.gz
jdk-8u212-linux-x64.tar.gz

注意:

  • Jdk 和 Tomcat 记得从官网下载,否则制作出来的镜像容易出现不兼容问题。

    jdk1.8下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    tomcat8下载:https://tomcat.apache.org/download-80.cgi

  • 准备修改好的 server.xml (修改连接和线程数),制作镜像时覆盖tomcat中的;

  • apache-tomcat-8.5.50.tar.gz、jdk-8u212-linux-x64.tar.gz、Dockerfile放在同一目录

二、编写Dockerfile

内容如下:

# 指定操作的镜像
FROM centos:7 # 维护者信息
MAINTAINER caoweixiong # 将 jdk 和 tomcat 添加到镜像centos的/usr/local/目录下
ADD jdk-8u212-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.50.tar.gz /usr/local/ # 覆盖相关文件
COPY server.xml /usr/local/apache-tomcat-8.5.50/conf/ # 添加环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_212
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
ENV TZ="Asia/Shanghai"
ENV JAVA_OPTS="\
-server \
-Xms3g \
-Xmx3g \
-Xmn512m \
-Xss512K \
-Dfile.encoding=UTF-8 \
-verbose:gc \
-XX:+UseConcMarkSweepGC \
-XX:MaxTenuringThreshold=10 \
-XX:+ExplicitGCInvokesConcurrent \
-XX:GCTimeRatio=19 \
-XX:+UseParNewGC \
-XX:+UseCMSCompactAtFullCollection \
-XX:CMSFullGCsBeforeCompaction=10 \
-XX:+CMSClassUnloadingEnabled \
-XX:+CMSParallelRemarkEnabled \
-XX:CMSInitiatingOccupancyFraction=50 \
-Xnoclassgc \
-XX:SoftRefLRUPolicyMSPerMB=0" # 暴露8080端口
EXPOSE 8080 # 容器启动时运行tomcat
CMD /usr/local/apache-tomcat-8.5.50/bin/catalina.sh run

注:环境变量【JAVA_OPTS】也可在容器启动时指定:-e JAVA_OPTS='-server -Dfile.encoding=UTF-8 -Xms2g -Xmx2g -Xmn512m -Xss512K ..............'

三、制作镜像

执行 docker build 制作镜像:

docker build -t tomcat-8.5.50:v1 .

说明:

-t  设置tag名称, 命名规则registry/image:tag(若不添加版本号,默认latest)

.  表示使用当前目录下的Dockerfile文件(注意语句后面有一个点),如需指定目录,则用 -f

执行 docker images 查看构建的镜像:

四、启动tomcat容器

# 挂载代码
docker run -d --name mytomcat -v /server/webapps:/usr/local/tomcat/webapps/ -e TZ="Asia/Shanghai" --privileged=true -p 8080:8080 tomcat-8.5.50:v1

# 挂载日志
docker run -d -e TZ="Asia/Shanghai" --name masl -p 8081:8080 -v /home/mppay/logs/masl:/home/mppay/logs/masl 10.0.29.104:5000/masl:17

# 挂载配置文件catalina.sh(调整内存)
docker run -d --name masl -p 8081:8080 -e TZ="Asia/Shanghai" -v /usr/local/tomcat/bin/catalina.sh:/usr/local/apache-tomcat-8.5.50/bin/catalina.sh 10.0.29.104:5000/masl:sit-17

# 挂载配置文件server.xml(调整端口和线程数)
docker run -d --name masl -p 8081:8080 -e TZ="Asia/Shanghai" -v /usr/local/tomcat/conf/server.xml:/usr/local/apache-tomcat-8.5.50/conf/server.xml 10.0.29.104:5000/masl:sit-17

说明:

*  -d 后台运行

*  --name mytomcat 容器名称
*  -v /server/webapps:/usr/local/tomcat/webapps/ 挂载当前项目的运行目录到tomcat下的webapps
*  -e TZ="Asia/Shanghai" 设置时区
*  --privileged=true 设置拥有容器中的真正的root权限
*  -p 8080:8080 映射端口(宿主机port : 容器port)
*  tomcat-8.5.50:v1 镜像的名称

执行 docker ps 查看进程:

五、访问验证

输入地址:http://ip:8080

最新文章

  1. ceph hadoop spark 大数据处理
  2. Android深度探索--HAL与驱动开发----第一章读书笔记
  3. 十大广泛使用的Linux发行版
  4. 在CentOS上搭建apache和PHP服务器环境(转)
  5. LeetCode Number of Digit One
  6. python数据分析之pandas库的Series应用
  7. Excel导出问题(导出时不去掉前面的0)(转)
  8. wxPython + Boa 练习程序
  9. The 6th Zhejiang Provincial Collegiate Programming Contest->Problem I:A Stack or A Queue?
  10. hadoop 学习笔记 (十) mapreduce2.0
  11. common-httpclient 用户名密码认证示例
  12. android省电开发之cpu降频
  13. 初识动画animation
  14. js入门实例
  15. ios2048小游戏
  16. 洛谷 P3616 富金森林公园 [树状数组]
  17. javac编译同一个包内的java文件
  18. Java开发笔记(四十八)类的简单继承
  19. 状压DP初探·总结
  20. Citrix XenApp登录服务器过程详解

热门文章

  1. 痞子衡嵌入式:从头开始认识i.MXRT启动头FDCB里的lookupTable
  2. Scrapy 5+1 ——五大坑附送一个小技巧
  3. MyBatis笔记(三)
  4. OO_Unit4 UML模型化设计总结
  5. Oracle recover current redo ORA-00600:[4193] (oracle 故障恢复current redo日志ORA-00600:[4193]报错)
  6. Fastbin attack 总结
  7. WPF-3D圆柱体透视
  8. 解决WebStorm无法正确识别Vue3组合式API的问题
  9. Go-16-map
  10. 什么?女神发了朋友圈,快来围观之Java设计模式:观察者模式