当前位置: 首页 > news >正文

第八章 实战:构建Tomcat镜像及发布

目录

一、准备开发环境包

二、编写DockerFile文件

三、构建镜像 

 四、运行镜像

五、访问镜像

六、发布镜像到DockerHub 


一、准备开发环境包

准备镜像文件所需的Tomcat压缩包和JDK压缩包,readme.txt里的内容随便写。

二、编写DockerFile文件

FROM centos
MAINTAINER wangzhexiaoCOPY readme.txt /home/wzx/app/ADD jdk-8u421-linux-x64.tar.gz /home/wzx/app/
ADD apache-tomcat-9.0.95.tar.gz /home/wzx/app/RUN yum -y install vimENV WORKPATH /home/wzx/app
WORKDIR $WORKPATHENV JAVA_HOME /home/wzx/app/jdk1.8.0_421
ENV CATALINA_HOME /home/wzx/app/apache-tomcat-9.0.95
ENV CATALINA_BASH /home/wzx/app/apache-tomcat-9.0.95
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/binEXPOSE 8080CMD /home/wzx/app/apache-tomcat-9.0.95/bin/startup.sh && tail -F /home/wzx/app/apache-tomcat-9.0.95/bin/logs/catalina.out

三、构建镜像 

docker build -f dockfile -t mytomcat:1.0 .

 四、运行镜像

docker run -d -p 3386:8080 --name wzx-tomcat -v /home/wzx/tomcat/test:/home/wzx/app/apache-tomcat-9.0.22/webapps/test -v /home/wzx/tomcat/testlogs/:/home/wzx/apache-tomcat-9.0.22/logs mytomcat:1.0

五、访问镜像

我们在宿主机挂载目录/home/wzx/tomcat/test下分别创建目录及文件:

index.jsp

WEB-INF/web.xml

 web.xml里的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-appversion="4.0"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xml="http://www.w3.org/XML/1998/namespace"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"></web-app>

index.jsp代码如下:

Hello World!

如下图所示,访问成功 。我们本章通过tomcat服务器运行JavaWeb程序的镜像就此构建运行成功。

六、发布镜像到DockerHub 

1. 地址 https://hub.docker.com/ 注册自己的账号!

2. 已有账号的确定账号密码可以登录

3. 在本地服务器提交自己的镜像

登录后push自己本地镜像即可

docker push 镜像:版本

相关文章:

  • 测试用例的进阶二
  • 独立站如何批量查收录?常用的3个的方法及其具体操作步骤
  • 23款奔驰E300立标升级23P智能辅助驾驶案例分享
  • 爬虫技术深潜:探究 JsonPath 与 XPath 的语法海洋与实战岛屿
  • 力扣 最小覆盖子串
  • 数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall
  • cmd命令大全详解
  • 【4.7】图搜索算法-DFS和BFS解根到叶子节点数字之和
  • 2015年国赛高教杯数学建模A题太阳影子定位解题全过程文档及程序
  • OpenCV视频I/O(8)从视频源中读取一帧图像函数read()的使用
  • CDGA|数据治理:策略与价值的深度融合
  • CentOS 修改服务器登录密码的完整指南
  • 60.【C语言】内存函数(memset,memcmp函数)
  • 剖解环形链表1
  • 【nrm】npm 注册表管理器
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Angularjs之国际化
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • javascript面向对象之创建对象
  • JS数组方法汇总
  • miaov-React 最佳入门
  • python大佬养成计划----difflib模块
  • python学习笔记 - ThreadLocal
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 番外篇1:在Windows环境下安装JDK
  • 关于 Cirru Editor 存储格式
  • 来,膜拜下android roadmap,强大的执行力
  • 如何合理的规划jvm性能调优
  • 使用权重正则化较少模型过拟合
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 听说你叫Java(二)–Servlet请求
  • 微信开放平台全网发布【失败】的几点排查方法
  • 我感觉这是史上最牛的防sql注入方法类
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # linux 中使用 visudo 命令,怎么保存退出?
  • (02)Hive SQL编译成MapReduce任务的过程
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2.2w字)前端单元测试之Jest详解篇
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core控制台应用程序初识
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET中GET与SET的用法
  • @AliasFor 使用
  • @Autowired自动装配
  • @Conditional注解详解
  • @html.ActionLink的几种参数格式
  • @KafkaListener注解详解(一)| 常用参数详解
  • @RequestBody与@ResponseBody的使用