一。docker定制简单的java-web应用镜像

网址:

1。jdk下载网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

docker安装tomcat8

基于docker安装tomcat

docker操作镜像

Eg1:以本地java打war包为例,构建一个镜像

Step1:以tomcat镜像为基础镜像

docker pull tomcat   //拉取tomcat镜像

Step2:定制镜像

touch Dockerfile   #新建Dockerfile文件

vi Dockerfile   #编辑Dockerfile

##add content start

FROM tomcat:latest

MAINTAINER shiyufeng kaixinyufeng@sina.com

COPY web-ssm-single.war /usr/local/tomcat/webapps

##add content end

Step3:构建镜像

docker build -t cfca-web:v1 .  //在当前目录,构建一个cfca-web的镜像,tag为v1的镜像

Step4:run镜像为容器

docker run -d -p 8089:8080 cfca-web:v1  //-d后台守护进程 -p映射端口宿主机:容器 镜像名

地址栏访问:http://localhost:8089/web-ssm-single/即可。

命令行访问:

ZBMAC-C02VX5Y7H:myLearn shiyufeng$ curl http://localhost:8089/web-ssm-single

ZBMAC-C02VX5Y7H:myLearn shiyufeng$ curl http://localhost:8089/web-ssm-single/

<html>

<body>

<h2>Hello World!</h2>

<h3><a href="/user/query">send request</a></h3>

</body>

</html>

地址栏访问:http://localhost:8089/web-ssm-single/

成功!!!

二。实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署

参考博客源码地址:https://github.com/zq2599/blog_demos.git 项目名:loadbalancedemo

Step1:创建空文件夹:mkdir image_tomcat

Step2:拷备apache-tomcat-7.0.86/conf目录下的文件server.xml和tomcat-users.xml到image_tomcat目录下面

Step3:修改server.xml

<Connector executor="tomcatThreadPool"
port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />

增加:URIEncoding="UTF-8" 目的:处理中文问题

Step4:修改tomcat-users.xml,增加如下内容:

<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="account001" password="password001" roles="manager-gui,manager-script" />

以上配置完成后,即可用account001账号在对应的tomcat上进行在线部署操作了.

Step5:定制Docker镜像

cd image_tomcat

touch Dockerfile  //创建Dockerfile文件

vim Dockerfile  //编辑Dockerfile文件

//###start 添加如下内容

#First docker file from bolingcavalry
#version 0.0.1
#Author:shiyufeng
#基础镜像
FROM tomcat:7.0.77-jre8

#作者
MAINTAINER shiyufeng

#定义工作目录
ENV WORK_PATH /usr/local/tomcat/conf

#定义要替换的文件名
ENV USER_CONF_FILE_NAME tomcat-users.xml

#定义要替换的server.xml文件名
ENV SERVER_CONF_FILE_NAME server.xml

#删除原文件tomcat-users.xml
RUN rm $WORK_PATH/$USER_CONF_FILE_NAME

#复制文件tomcat-users.xml
COPY ./$USER_CONF_FILE_NAME $WORK_PATH/

#删除原文件server.xml
RUN rm $WORK_PATH/$SERVER_CONF_FILE_NAME

#复制文件server.xml
COPY ./$SERVER_CONF_FILE_NAME $WORK_PATH/

//###end

以上:image_tomcat目录结构:

ZBMAC-C02VX5Y7H:image_tomcat shiyufeng$ tree
.
├── Dockerfile
├── server.xml
└── tomcat-users.xml

Step6:构建docker镜像

//在当前目录构建镜像。注意后面的点为当前目录
docker build -t tomcat001:0.0. . //查看镜像
docker image ls tomcat001

Step7:镜像构建完毕,启动tomcat

//启动tomcat容器
docker run --name=tomcat001 -p : -e TOMCAT_SERVER_ID=tomcat_server_001 -idt tomcat001:0.0. /*
--name:为容器起的别名 -p:映射端口,宿主机与容器 */

Step8:启动浏览器,访问localhost:8080,显示tomat图标即为启动成功.

Step9:修改mavenl配置文件setting.xml,增加如下配置

<server>
<id>tomcat7</id>
<username>account001</username>
<password>password001</password>
</server>

以上是tomcat的tomcat-users.xml文件中配置的用户和密码,这样执行maven插件的时候就能从此处取得对应的用户名和密码去tomcat上做操作了。

Step10:进入web工程,pom.xml目录执行如下命令

注:刚定制的docker镜像必须启动状态,才可以成功构建,否则会报“构建失败”

mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy

执行结果如下所示,即代表tomcat7-maven-plugin插件已经帮我们把war部署到docker容器上去了

[INFO] tomcatManager status code:, ReasonPhrase:OK
[INFO] OK - Deployed application at context path /loadbalancedemo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.561 s
[INFO] Finished at: --15T17::+:
[INFO] Final Memory: 21M/216M
[INFO] ------------------------------------------------------------------------

Step11:浏览器输入http://localhost:8080/loadbalancedemo/hello?name=开心玉凤

显示结果:

您好开心玉凤,这是来自tomcat_server_001的问候!2018-12-16 01:51:44

效果如下所示:

以上:项目名称修改为ssm-docker,修改点:

(1)右击项目名-》Refactor-》重新命名

(2)pom.xml中修改<finalname>

(3)project structure-》相应修改项目名称即可。

地址栏输入:http://localhost:8080/ssm-docker/hello?name=开心玉凤

项目应用:java-web项目(spring+springmvc+mybatis+maven架构

项目需求:定制docker镜像,方便jenkins部署。

第一版本:应用docker定制简单的镜像示例,拷备方式。

touch Dockerfile

vim Dockerfile

##add content
FROM tomcat:latest
COPY ./target/cfca-web.war /usr/local/tomcat/webapps

第二版本:参考实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署

场景:搭建一台虚拟机,定制tomcat镜像。

本机java-web项目只需要修改pom.xml文件配置

//修改url即可
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--<url>http://localhost:8080/manager/text</url>-->
<url>http://192.168.99.100:8090/manager/text</url>
<server>tomcat7</server>
<path>/${project.artifactId}</path>
<update>true</update>
</configuration>
</plugin>

maven打包部署:mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy

浏览器访问:http://192.168.99.100:8090/cfca/ 即可显示index.jsp内容。(任意修改即可成功部署)

注:由于jekins部署git地址与指定的url地址不通,会出现问题:不能向指定的url中的tomcat中部署war包。

解决方案:该url通过maven命令动态传递

//step1:属性配置中增加参数<maven.url>或其他如connectionUrl
<properties>
<maven.url></maven.url>
</properties> //Step2:修改url配置 如${connectionUrl}
<url>${maven.url}</url> //Step3:maven部署打包命令中增加参数 或DconnectionUrl=xxx
mvn clean package -U -Dmaven.test.skip=true -Dmaven.url=http://192.168.99.100:8090/manager/text tomcat7:redeploy

项目过程遇到问题点:

执行mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy命令一直报“maven错误,找不到符号”

解决方案:1。Maven错误找不到符号   2。既使用maven编译,又使用lib下的Jar包(本项目问题原因)

方案一:
在项目中创建一个目录lib,然后将jar复制到该文件夹下,最后在maven编译插件中配置如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<!-- 新增的编译配置参数 -->
<compilerArguments>
<!-- 对应jar放置在项目中的位置 -->
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>

方案二:
  步骤一:模仿maven的本地仓库目录结构,创建类似的目录,把二方包jar包放到创建好的目录中;
  步骤二:在pom文件中添加本地仓库中的二方包jar包坐标。

_
-->_
-->

docker安装tomcat&部署javaweb程序的更多相关文章

  1. docker安装tomcat并部署web项目

    docker安装tomcat就不说了,网上一大把 启动tomcat: docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tom ...

  2. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

    Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...

  3. centos7+tomcat部署JavaWeb项目超详细步骤

    我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建 ...

  4. 【转载】centos7+tomcat部署JavaWeb项目超详细步骤

    我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建 ...

  5. 【记录】linux docker 安装 tomcat

    前言:首先linux需要先安装docker,具体步骤可以参考博主之前博客,也可自行百度. 话不多说,开始安装tomcat: 通过docker安装tomcat docker pull tomcat:8. ...

  6. ubuntu docker安装与部署java,mysql,nginx镜像

    docker 安装与部署java,mysql,nginx docker 配置 安装docker $ sudo apt-get remove docker docker-engine docker.io ...

  7. Docker安装tomcat和部署项目

    随着微服务的流行,Docker越来越流行,正如它的理念"Build, Ship, and Run Any App, Anywhere"一样,Docker提供的容器隔离技术使得开发人 ...

  8. Docker安装Tomcat镜像并部署web项目

    一.安装Tomcat 1.查找Docker Hub上的tomcat镜像 docker search tomcat 2.拉取官方的镜像 docker pull tomcat 等待下载完毕,需要一些时间. ...

  9. docker安装Tomcat软件,部署项目

    1 搜索tomcat镜像 $ sudo docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tom ...

随机推荐

  1. 修改vue-cli脚手架顶部图标

    1. 将ico图标放到static目录下 2. 在 build/webpack.dev.conf.js 文件修改   new HtmlWebpackPlugin({ ... favicon: './s ...

  2. shell练习--PAT题目1005:继续(3n+1)猜想(全绿失败喜加一)

    卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...

  3. Codecombat 游戏攻略(计算机科学三)2

    第33关 逻辑之路 判断secretB 非真,走上面:否则,走下面(这里面要先自己进行逻辑判断)if…else语句或者这样用(不用自己进行判断) // 如果 secretB 非真,走上面:否则,走下面 ...

  4. 安装SQL2012出现[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1

    本人安装SQL2012出现这个错误,找了三天三夜,终于把问题找出来,共享给有需要的人们,不用重新换系统 错误如下: 1,此问题是系统.net Framework版本冲突,首先下载.net Framew ...

  5. linux 系统下 zip 的加密压缩与解压缩命令

    1.加密压缩 [small@sun shine]# zip -rP king java.zip java adding: java/ (stored 0%) adding: java/default/ ...

  6. opencv加椒盐噪声

    void salt(IplImage *img, int saltNum) { int x,y; int i ; unsigned char *src = NULL; src = (unsigned ...

  7. PHP+FLASH大文件断点续传功能分享

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...

  8. 基于OpenCV/TensorFlow的手写MNIST文字匹配

    手写文字具有哪些统一特征?用ML和SVM是如何做到的? 检测 特征匹配 文字识别 毕竟汉语言文字奇形怪状,很不好辨认,尤其是手写体,跟英文字母不同. MNIST一共有哪些库 现实环境更是复杂 有时还只 ...

  9. Android应用系列:仿MIUI的Toast动画效果实现

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  10. jdbcTemplate进行CRUD,查询结果转json

    通过Spring的jdbcTemplate作为dao层的框架,将获取到的字段名,及其值,通过put放在jsonObject或jsonArray中,将json返回. public class Sprin ...