Docker下的web开发和Tomcat部署

本章实践的主要目标是开发一个简单的web应用,打包部署到Docker的tomcat容器中去; 并且使用Mavan的自动部署到Docker 完成简单的自动化部署,完成后实现镜像文件打包到hub.docker.com;

  第一步:安装tomcat8 镜像;

查询一下tomcat8镜像文件:

docker search tomcat8

docker pull tomcat:8.0.51

来快速体验一下镜像的效果,执行命令:

    docker run -it --rm -p 8888:8080 tomcat:8.0.51

     rm参数表示container结束时,Docker会自动清理其所产生的数据。

  可以看到tomcat启动的日志全部打印在终端了,

    因为我们用-p 8888:8080将容器的8080端口映射到当前电脑的8888端口,所以打开当前电脑的浏览器,输入:localhost:8888,可以看到熟悉的   Tomcat页面:

http://192.168.1.102:8888/

   接下来我们开发一个最简单的spring mvc应用,然后部署到docker的tomcat容器中试试,创建maven工程:

 


      通过mavean 建立简单的WEB项目;

      现在我们把文件部署到tomcat上去,先建一个目录,例如我建了这个目录:/usr/docker/server/tomcat_1,然后把docker-0.0.1-SNAPSHOT.war 文件复制到这个目录下,再在控制台执行以下命令:


再在控制台执行以下命令:

     docker run --name docker-tomcat -p 8888:8080 -d -v /usr/docker/server/tomcat:/usr/local/tomcat/webapps tomcat:8.0.51

这时候再打开浏览器,输入

      http://192.168.1.102:8888/docker-0.0.1-SNAPSHOT

       此时,我们今天测试tomcat部署的目的已经达到了,接下来再试试提交镜像,在容器中输入exit 退出容器,再执行”docker stop docker-tomcat”停止容器,然后执行以下命令把容器作为镜像保存在本地:

   docker commit -a "dockertony1" -m "from tomcat 8.0.51,with a demo webapp"  docker-tomcat dockertony1/docker-tomcat:0.0.1

  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

         -a :提交的镜像作者;

       -c :使用Dockerfile指令来创建镜像;

        -m :提交时的说明文字;

  执行完毕后,输入docker images,可以看到新增的镜像:


       接下来我们试着把本地镜像提交到hub.docker.com去(前提是已经在这个网站上注册过),输入命令docker login,接下来按照提示输入用户名和密码,执行一下命令提交镜像:

     docker push  dockertony1/docker-tomcat:0.0.1

     有点费时,需要等待:

在执行过程中, tag的名字斜线前面部分dockertony1 不是本人的用户名,会出现一下问题:

    denied: requested access to the resource is denied : docker

  在上传过程中可能会遇到"net/http: TLS handshake timeout":没办法,因为国外仓库速度较慢,则会报错“net/http: TLS handshake timeout”。

     解决方式如下:

         https://www.cnblogs.com/wozixiaoyao/p/6059780.html

但是我的网络一致不行;一般公司都会搭建自己的私有镜像仓库,后续会补上;

等上传成功后,再去hub.docker.com上看看吧,就可以在自己的仓库下面已经可以看到刚刚提交的镜像了:

使用maven插件自动部署web应用至Docker容器的tomcat

配置maven

在pom.xml加入


      
        
           org.apache.tomcat.maven
           tomcat8-maven-plugin
           2.2
           
              http://192.168.1.102:8888/manager/text
              tomcat
              deploy
              deploy
           
        
      
   

在maven的settings.xml加入

 
      tomcat
      deploy
      deploy
  

在tomcat-users.xml加入以下内容




容器的文件是不能修改的,所以我才用虚拟卷的形式来修改tomcat文件;

docker run --name docker-tomcat -p 8888:8080 -d -v /usr/docker/server/tomcat:/usr/local/tomcat/webapps -v /usr/docker/server/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml tomcat:8.0.51
 将web应用部署至容器里运行的tomcat
mvn tomcat7:deploy 

可能会出现的问题:
 在maven dploy :

Cannot invoke Tomcat manager: Connection reset by peer:

这是因为tomcat 容器上了manager 项目,把这个加上去就行了







查看原文:http://www.dczou.com/viemall/795.html

你可能感兴趣的:(Docker下的web开发和Tomcat部署)