在docker下的tomcat容器中部署war包的两种方式

2022-06-22 09:59:21

在docker下的tomcat容器中部署war包的两种方式

  • 在tomcat镜像中部署javaweb项目

  • 打包javaweb项目

    像通常的javaweb项目部署一样,首先需要将javaweb项目打成war包,具体不再详述。

  • 查看tomcat镜像启动的容器

    docker ps

    记录下tomcat镜像启动的容器的ID或容器名称。

  • 方法一

  • 将war包放入到docker下的tomcat中

    首先你是需要把war包放入到centos系统中,本文中将一个test.war的项目放入centos系统的主目录,这个通过ssh工具就可以放到centos中,大家应该都很熟悉。从centos中将test.war移动到docker下tomcat镜像启动的容器中。

    docker cp test.war containerID:/usr/local/tomcat/webapps/

    说明:

    containerID 是你所启动tomcat镜像的容器ID或者容器名称也可以。
    
    这是将test.war放到tomcat的webapps下
    • docker常用命令

      这里为了方便理解,就以tomcat镜像为例。一行语法说明,一行例子。

  • 通过镜像产生一个容器

    docker run -p port1:port2 containerName:tag

    注意:port1为系统端口,port2为容器端口

    docker run -p 8080:8080 tomcat:latest

  • 启动一个已有的容器

    docker start containerID/containerName

    其中admiring_turing是tomcat镜像创建的一个容器名称,也可以使用其容器ID

  • 停止一个容器

    docker stop containerID/containerName

  • 重启一个容器

    docker restart containerID/containerName

  • 与一个已经启动的容器进行交互式操作

    docker exec -i -t  容器ID/镜像名  /bin/bash

  • 复制文件到容器中

    docker cp /test.txt 镜像名:/usr/local/

    test.txt 是自己创建的一个测试文件,将文件复制到了容器的/usr/local目录下。

  • 在后台运行一个容器

    docker run -d -p tomcat:latest

  • 交互方式进入刚才运行起来的容器中

docker ps

输入图片说明

docker exec -it mytomcat7 /bin/bash

  •  将war包copy到容器中的tomcat webapps目录下

docker cp dockertest.war mytomcat7:/usr/local/tomcat/webapps

  • 退出

exit

 方法二:

进入Docker容器的文件目录,通过tomcat-users.xml 配置tomcat管理员

  • 首先查看tomcat容器的CONTAINER ID :
docker ps

  • 进入容器内部文件系统

进入容器内部  容器内部有一些设置文件 只能通过这种方式进入

交互式的进入tomcat容器。“docker exec”命令表示在运行中的容器中开启一个新的进程。

进入容器内部  容器内部有一些设置文件 只能通过这种方式进入

docker exec -it ea422adc42c5 bash
#进入webapps文件夹下查看一下存在的war包
cd webapps

  • 进入tomcat的conf文件夹下:

root@ea422adc42c5:/usr/local/tomcat/webapps# cd ..
root@ea422adc42c5:/usr/local/tomcat# cd conf/
root@ea422adc42c5:/usr/local/tomcat/conf# ls
Catalina	 catalina.properties  jaspic-providers.xml  logging.properties	tomcat-users.xml  web.xml
catalina.policy  context.xml	      jaspic-providers.xsd  server.xml		tomcat-users.xsd
root@ea422adc42c5:/usr/local/tomcat/conf# 
root@ea422adc42c5:/usr/local/tomcat/conf# vi tomcat-users.xml 
bash: vi: command not found
root@ea422adc42c5:/usr/local/tomcat/conf#

然后我们发现xml文件是无法直接用vi命令编辑的。

这里提供三种方法:

1.-v 挂载 docker run -v localConfigFile:/containerPath

2.exec 进入容器修改 docker exec -it containerID bash 可以安装vi进行修改

3.cp 可以将宿主机的配置文件拷贝到container中, docker cp host/path:/container/path

建议使用第三个

找到一个tomcat容器外部的已经配置好的tomcat-users.xml文件。

如何配置tomcat-users.xml文件可以参考(https://blog.csdn.net/qq_39530754/article/details/82387497

如下:

我们将这个文件复制到Tomcat容器,将tomcat容器中的tomcat-users.xml覆盖。

#将xml文件cp到容器内部
docker cp tomcat-users.xml ea422adc42c5:/usr/local/tomcat/conf/

#进入容器内部查看
docker exec -it ea422adc42c5 bash

这是我的tomcat-users.xml文件:

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
     <role rolename="manager"/>    
    <role rolename="manager-gui"/>    
    <role rolename="admin"/>    
    <role rolename="admin-gui"/>    
    <role rolename="manager-script"/>    
    <role rolename="manager-jmx"/>    
    <role rolename="manager-status"/>    
    <user username="admin" password="admin" roles="admin-gui,admin,manager-gui,manager,manager-script,manager-jmx,manager-status"/> 

</tomcat-users>

 黄色的证明拷贝进来了。

下面我们重启一下tomcat容器

docker restart ea422adc42c5

等待一会之后看是否配置成功,如果没有配置成功,则还需要配置另外两个xml文件。

可以参考(https://blog.csdn.net/qq_39530754/article/details/82387497

将这些配置文件拷贝到tomcat容器的相应位置,

在重启,就可以啦~~

 然后我们直接可以在这里部署我们的war包。

  • 作者:繁星、晚风
  • 原文链接:https://blog.csdn.net/qq_39530754/article/details/82909777
    更新时间:2022-06-22 09:59:21