Dockerfile创建tomcat和jdk,并发布java项目
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日志
- $ sudo docker exec --help

- $ sudo docker ps
- $ sudo docker exec -it 775c7c9ee1e1 /bin/bash
Dockerfile创建tomcat和jdk,并发布java项目的更多相关文章
- 项目案例之Pipeline流水线发布JAVA项目(三)
项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...
- Centos 如何 发布Java项目
在发布Java项目之前,我们先要安装如下软件 一.Windows 1.winscp(Windows到centos上传下载) 2.PuTTY(Windows访问centos服务器) 3.Navicat客 ...
- 【linux】【jenkins】自动化运维四 整合gitlab、docker发布java项目
jenkins发布java项目 过程参考发布vue项目.https://www.cnblogs.com/jxd283465/p/11543431.html 大同小异. vue建立的是Freestyle ...
- liunx新装tomcat之后,tomcat不能识别新发布的项目
遇到的问题 在liunx新装tomcat之后,发布之前的项目,发现在tomcat不能识别新发布的项目,打成war包,还是直接把项目拷贝过去都不行. 环境:虚拟机:VMware 主机系统:win10 虚 ...
- Centos 7.6搭建Tomcat 环境,发布Java项目
安装 JDK Tomcat 的安装依赖 JDK,在安装 Tomcat 之前需要先安装 Java JDK.输入命令 java -version,如果显示 JDK 版本,证明已经安装了 JDK java ...
- 从零开始部署发布Java项目到服务器的Docker中
本以为很简单,由于没用过docker和java,本文将会阐述一路遇到的拦路虎. 首先,写好Java项目,本地跑通. 可能会遇到的问题: 1.jar包正常运行,war包404: 如何打包很多教程都有介绍 ...
- 【图文】 使用ant编译和发布java项目
开发JavaEE项目经常会碰到修改代码后,项目没有重新编译的问题.老大给指明了一个解决办法:用ant编译项目. ant是apache基金会下的一个项目,是基于Java语言的构建工具. ...
- Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat
一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...
- 15 自动发布Java项目(Tomcat)
#!/bin/bash export PAHT=/usr/local/maven/bin:/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/ ...
随机推荐
- JS 04 Date_Math_String_Object
Date <script> //1.Date对象 var d1 = new Date(); //Thu May 02 2019 14:27:19 GMT+0800 (中国标准时间) con ...
- C# 整型数和浮点型数的进制转换
1.十进制转二进制 /// <summary> /// 十进制转二进制 /// </summary> public class Convert10To2 { /// <s ...
- Docker多阶段构建实战(multi-stage builds)
在编写Dockerfile构建docker镜像时,常遇到以下问题: RUN命令会让镜像新增layer,导致镜像变大,虽然通过&&连接多个命令能缓解此问题,但如果命令之间用到docker ...
- scp2自动部署
安装scp2 npm install scp2 --save-dev 配置服务器文件 项目根目录创建文件 .env.dev 文件 (测试环境变量)和创建 .env.prod 文件 (生产环境变量) V ...
- CentOS7使用yum安装PostgreSQL和PostGIS
更新yum源 CentOS7默认yum源的PostgreSQL版本过低,不适合在本版本上使用.在https://yum.postgresql.org/repopackages.php上找到适合Cent ...
- BufferInputStream、BufferOutputStream、BufferedReader、BufferedWriter、Java代码使用BufferedReader和BufferedWriter实现文本文件的拷贝
BufferInputStream和BufferOutputStream的特点: 缓冲字节输入输出流,缓冲流是处理流,它不直接连接数据源/目的地,而是以一个字节流为参数,在节点流的基础上提供一些简单操 ...
- Image Processing and Analysis_8_Edge Detection:Design of steerable filters for feature detection using canny-like criteria ——2004
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- python之分支和循环
Day 1-night 三元操作符 语法:a=x if 条件 else y 即:当条件为True时,a的值赋值为x,否则赋值为y eg:small=x if x<y else y <=& ...
- zabbix low-level discovery 监控mysql
当一台服务器上MySQL有多个实例的时候,MySQL占用多个不同端口.利用zabbix的low-level discovery可以轻松监控. 思路参考:http://dl528888.blog.51c ...
- 【SCOI2007】降雨量
新人求助,降雨量那题本机AC提交WAWAWA…… 原题: 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小 ...