Docker - Docker部署war包
创始人
2024-02-16 09:50:42
0

使用Docker部署war项目,必须要用容器,我们就用tomcact容器,其实都是将war包丢到tomcat的webapps目录下,tomcat启动的情况下会自动解压war包

部署war包有两种方式

1、在Docker中安装tomcat容器的镜像,然后把war包丢到tomcat镜像下webapps中

注:如果tomcat关闭了,其webapps下的包就会消失

2、利用挂载,还是安装tomcat容器的镜像,但是不把war包丢到tomcat下的webapps中,直接创建一个外部文件夹,将这个外部文件夹跟wabapps关联,这样把war丢到新建的文件夹中,tomcat的webapps也能读取到这个war包,这就是挂载

1、修改springboot配置

(1)打包war包,修改pom.xml文件

4.0.0com.mycompanydocker-project-web0.0.1-SNAPSHOTwar

(2)移除内置web模块自带的tomcat

org.springframework.bootspring-boot-starter-tomcat

(3)添加servlet依赖,不然打包报错

javax.servletservlet-api2.5providedjavax.servletjsp-api2.0provided

(4)项目加别名,在build标签下增加finalName,就是项目名,如果不加,项目名就是你的artifactId-version,生成的war包名称也是artifactId-version.war,浏览器访问的时候项目名字太长

dockerProect

2、搜索Tomcat镜像

Docker官网 https://www.docker.com/

Docker镜像仓库 https://registry.hub.docker.com/

(1)直接取docker镜像仓库搜索

 (2)打开宿主机centos7以上系统

docker search tomcat

3、下载Tomcat镜像

 默认跟了  :latest  下载最新版;如全写  docker pull tomcat:latest

// 默认跟了  :latest  下载最新版;如全写  docker pull tomcat:latest
docker pull tomcat

可以查看容器

docker images

4、启动容器

注:这里需要做端口映射

从客户机上访问容器,需要有端口映射;docker容器默认此阿勇桥接模式与宿主机通信,需要将宿主机的IP端口映射到容器的IP端口上  使用 -p 参数

//映射8080 也可以,博主使用的 9090
docker run -d -p 9090:8080 tomcat:9.0docker run -d -p 9090:8080 tomcat:9.0 --restart=always --privileged=true

1、--restart=always:当 Docker 重启时,容器能自动启动

docker run --restart具体参数值详细信息

no -  容器退出时,不重启容器;

on-failure - 只有在非0状态退出时才从新启动容器;

        –restart=on-failure:10 : 表示最多重启10次

always - 无论退出状态是如何,都重启容器;
 

2、--privileged=true:挂载宿主机目录,不会报权限问题

如果docker run 的时候没有加 --restart=always ,然后已经运行的docker容器,执行下面命令

# demo : 你的容器名称
docker update –-restart=always demo

查看容器状态 

docker ps

CONTAINER ID:每个容器的唯一标识符号,自动生成。类似于数据库中的主键

IMAGE :创建容器使用的镜像名称

COMMAND:运行容器时的命令

CREATED:容器创建的时间

STATUS:容器的运行状态,Up 8 months 指容器已运行8个月
        -created(已创建)
        -restarting(重启中)
        -running(运行中)
        -removing(迁移中)
        -paused(暂停)
        -exited(停止)
        -dead(死亡)
PORTS:容器开放的端口信息。
NAME:容器的别名,在运行容器执行docker run 时可使用 --name进行指定

5、访问 9090端口,如果发现网页无法访问,报错404

错误原因

Tomcat文件夹下的 webapps 文件夹是空的

tomcat 默认的欢迎页面实际上放在的路径应该是 webapps/ROOT/index.jsp 或者 index.html

解决办法

1、使用如下命令,查看容器ID

docker ps

2、进入容器

docker exec -it 容器ID /bin/bash

3、输入 ls 命令查看Tomcat目录下的文件及文件夹 

 4、 删除 webapps 目录,并且将 webapps.dist 目录重名为 webapps

mv webapps webapps2
mv webapps.dist/ webapps

或者 拷贝 webapps.dist 目录下的内容到 webapps 目录下

一、war包拷贝到Tomcat容器webapps文件夹下

1、可切换到根目录下,创建一个文件夹

mkdir varPackage

2、将本地的war包上传到 centos系统下的varPackage文件下(使用的SecureFX工具)

3、查看Tomcat容器安装路径,可以使用如下命令查看

docker exec -it Tomcat容器id /bin/bash

这是可以查看到Tomcat的路径 

退出容器:exit

4、拷贝varPackage文件下的war包拷贝到Tomcat容器下的webapps文件夹下

docker cp /warPackage/dockerProject.war Tomcat容器ID:/usr/local/tomcat/webapps

5、重启容器

docker restart +容器ID

二、挂载

1、可切换到根目录下,创建一个文件夹

mkdir varPackage

 2、将本地的war包上传到 centos系统下的varPackage文件下(使用的SecureFX工具)

 3、挂载

// -v(挂载) 虚拟机目录 容器目录
docker run -d -p 8088:8080 -v /root/warPackage/:/usr/local/tomcat/webapps /bin/bash

宿主机查看:

cd /root/warPackage
ls

容器内查看:

docker exec -it 容器ID /bin/bash
cd webapps
ls

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...