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/ ...
随机推荐
- Struts2连接Mysql的Crud使用
今天分享的是struts2框架中增删改查的用法: 一:利用Struts2框架 1.1在pom.xml中导入相关依赖 <project xmlns="http://maven.apach ...
- 一文搞懂嵌入式uboot、kernel、文件系统的关系
总览: 在linux系统软件架构可以分为4个层次(从低到高分别为): 1.引导加载程序 引导加载程序(Bootloader)是固化在硬件Flash中的一段引导代码,用于完成硬件的一 ...
- R语言做逻辑回归
前面写过一个多分类的逻辑回归,现在要做一个简单的二分类,用glm函数 导入csv格式如下: mydata<-read.csv("D://li.csv",header=T) c ...
- 【原创】大叔经验分享(90)linux服务器iowait和负载很高
# top top - 21:21:51 up 207 days, 1:30, 5 users, load average: 0.90, 0.79, 1.62 Tasks: 249 total, 1 ...
- EF中DbContext的生命周期
/// <summary>/// 依赖注入系统中类的生命周期./// </summary>public enum DependencyLifeStyle{ /// < ...
- python实现暴力破解
import urllib2 import urllib import cookielib import threading import sys import Queue from HTMLPars ...
- Go 代码风格和规范
Go 语言写起来类似于C语言,因此熟悉C语言及其派生语言(C++.C#.Objective-C 等)的人都会迅速熟悉这门语言 编码风格 标识符命名规范 在习惯上,Go语言程序员推荐使用驼峰式命名,当名 ...
- css:display:grid布局
简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.如我们所知,CSS 总是用于网页的样式设置,但它并没有起到 ...
- MyBatis核心配置文件详析mybatis-cfg.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC & ...
- java序列化和反序列化使用总结
一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输 ...