1.准备好需要的jdk 和 tomcat

kun@ubuntu:~$ cd tomcat-docker/
kun@ubuntu:~/tomcat-docker$ ll
total
drwxrwxr-x kun kun May : ./
drwx------ kun kun May : ../
-rw-rw-r-- kun kun May : apache-tomcat-8.5..tar
-rw-rw-r-- kun kun May : Dockerfile
-rw-rw-r-- kun kun May : forms.war
drwxr-xr-x kun kun Dec : jdk/
-rw-rw-r-- kun kun May : jdk-8u201-linux-x64.tar.gz
drwxrwxr-x kun kun May : tomcat/

这里我将jdk和tomcat的tar.gz 包都通过 tar -zxvf解压了 并通过mv 修改了文件夹名字为jdk和tomcat

(其实不解压也可以,2中说明为啥我要解压,为啥不用解压而我又先解压了)

2.编写Dockerfile(示例如下)

FROM ubuntu:16.04
MAINTAINER ceshi@qq.com
COPY ./jdk /usr/local/jdk
COPY ./tomcat /tomcat 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
ENV CATALINA_OPTS -Xms128m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=512M
RUN cd /tomcat/logs && echo "" >>count.txt
ENTRYPOINT /tomcat/bin/startup.sh && tail -F /tomcat/logs/catalina.out

根据显示的行号来解释

  1.我们制作镜像的基础,在ubuntu16.04的系统上构建后续操作

   2.维护者信息

  3~5.复制当前目录下的jdk目录 到容器内部的/usr/local/jdk目录下

    解释下:

    Dockerfile提供了COPY 和 ADD 两种方式

    COPY : COPY ./jdk  /usr/local/jdk            #直接原样拷贝过去

    ADD   : ADD ./jdk-8u201-linux-x64.tar.gz  /usr/local/java        #拷贝过去,如果是压缩包还会自动帮着解压,本来是好事,但是解压后文件夹名字一长串,不便于记忆,就直接先解压好重命名好了再COPY过去

7~13.一看就知道了 通过 ENV 来设置各种环境变量

14.为了示例RUN的使用, 通过RUN命令,后面就可以执行各种linux命令

15.表示启动容器后执行的操作

将上述文件保存为Dockerfile  注意大小写,没有后缀,然后进入到该目录,执行命令构建镜像

sudo docker build -t xwg/tomcat:v1 --rm=true .
#如果改变了Dockerfile名字,则需要指定 -f 文件名称
xwg/tomcat:v1 镜像的名字及tag,  最后的点代表当前目录

启动试试看

sudo docker run -p 8899:8080 --name tomcat_xwg xwg/tomcat:v1        

然后问题又来了,容器倒是启动起来了,但是怎么把我们自己的war包丢里面运行起来呢?

sudo docker cp forms.war tomcat_xwg:/usr/local/tomcat/webapps

  forms.war  不解释

  tomcat_xwg:/usr/local/tomcat/webapps  冒号前面为容器名称或者id, 冒号后面为tomcat的webapps全路径

  丢进去就好了,会自动发布的,不需要我们再自己去启动tomcat了,因为容器启动后tomcat就默认启动了  Dockerfile最后一行就是启动tomcat

  丢进去后,控制台就会检测到,并自动部署

查看docker中tomcat日志

使用docker exec进入Docker容器
  除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:
  1. $ sudo docker exec --help
 
 
接下来我们使用该命令进入一个已经在运行的容器
    1. $ sudo docker ps
    2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash

Dockerfile创建tomcat和jdk,并发布java项目的更多相关文章

  1. 项目案例之Pipeline流水线发布JAVA项目(三)

    项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...

  2. Centos 如何 发布Java项目

    在发布Java项目之前,我们先要安装如下软件 一.Windows 1.winscp(Windows到centos上传下载) 2.PuTTY(Windows访问centos服务器) 3.Navicat客 ...

  3. 【linux】【jenkins】自动化运维四 整合gitlab、docker发布java项目

    jenkins发布java项目 过程参考发布vue项目.https://www.cnblogs.com/jxd283465/p/11543431.html 大同小异. vue建立的是Freestyle ...

  4. liunx新装tomcat之后,tomcat不能识别新发布的项目

    遇到的问题 在liunx新装tomcat之后,发布之前的项目,发现在tomcat不能识别新发布的项目,打成war包,还是直接把项目拷贝过去都不行. 环境:虚拟机:VMware 主机系统:win10 虚 ...

  5. Centos 7.6搭建Tomcat 环境,发布Java项目

    安装 JDK Tomcat 的安装依赖 JDK,在安装 Tomcat 之前需要先安装 Java JDK.输入命令 java -version,如果显示 JDK 版本,证明已经安装了 JDK java ...

  6. 从零开始部署发布Java项目到服务器的Docker中

    本以为很简单,由于没用过docker和java,本文将会阐述一路遇到的拦路虎. 首先,写好Java项目,本地跑通. 可能会遇到的问题: 1.jar包正常运行,war包404: 如何打包很多教程都有介绍 ...

  7. 【图文】 使用ant编译和发布java项目

        开发JavaEE项目经常会碰到修改代码后,项目没有重新编译的问题.老大给指明了一个解决办法:用ant编译项目. ant是apache基金会下的一个项目,是基于Java语言的构建工具.      ...

  8. Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat

    一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...

  9. 15 自动发布Java项目(Tomcat)

    #!/bin/bash export PAHT=/usr/local/maven/bin:/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/ ...

随机推荐

  1. IDEA安装及默认配置习惯配置(一)

    最新新转战IDEA,每次安装完需要做一些操作习惯的设置,在这里记录一下,下次安装可以快速上手用. 第一步,JAVA安装 JDK官方下载地址:https://www.oracle.com 下载JDK时根 ...

  2. JavaScript Drum kit

    用 JavaScript 实现网页鼓乐器,相关的初始代码在 JavaScript30 官网和 GitHub 上已经存在.我把 sound 文件夹下的音频全部替换掉了,一些相关解释也直接在注释中标明. ...

  3. Java基础加强-类加载器

    /*类加载器*/ 把.class文件从硬盘上加载出来,将类的字节码(二进制)加载到内存中 /*类加载器及其委托机制*/ Java虚拟机中可以安装多个类加载器(可以自己编写),系统默认三个主要类加载器, ...

  4. 【Distributed】分布式锁

    一.概述 1.1 分布式解决的核心思路 1.2 分布式锁一般有三种实现方式 二.基于Redis的分布式锁 2.1 使用常用命令 2.2 实现思路 2.3 核心代码 Maven依赖信息 LockRedi ...

  5. ES extended_stats 函数

    在进行ES聚合分析的时候,发现了一个非常有用的函数,extended_stats,可以对聚合的结果进行更近一步的分析 ,常见的 count sum avg  min max 等都可以一目了然 GET ...

  6. HTML之表格标签和form表单

    表格标签: table 一般用于信息展示 tr行 td文本单元格 th标题单元格(文本加粗) table属性: cellspacing:单元格间距,一般设置为0 cellpadding:文字到边框的距 ...

  7. sh make.sh fatal error: opencv2/opencv.hpp: No such file or directory

    问题: sh make.sh fatal error: opencv2/opencv.hpp: No such file or directory 解决: sudo apt-get install l ...

  8. 本地开发的jar包放到本地maven仓库

    mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\taobao-sdk-java-1455552377940-2016060 ...

  9. Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final

    笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...

  10. Java 基础 - 泛型类/泛型方法/类型通配符'?' 的用法及栗子

    笔记: /**1.定义一个PairTest泛型类, 测试泛型 类 Pair的用法 * class Pair<T>{ * private T first; * private T secon ...