irpas技术客

Linux使用Docker部署tomcat的war包以及使用到的应用超详细_Hi梅_linux war包部署到tomcat并且运行

网络 8282

一.准备前期:

linux安装Docker,百度安装教程设置Docker的开机自启动教程

二、开始配置: 前言:

在Docker中安装tomcat容器的镜像,然后把war包丢到tomcat镜像下webapps中即可。但是如果tomcat关闭了,其webapps下的包就会消失;

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

1 、安装tomcat镜像并启动

docker下搜索tomcat的镜像,想要通过docker搜索那么需要提前启动。

命令:

1. 启动docker :systemctl start docker 2. 关闭docker :systemctl stop docker 3. 查看docker的运行状态: systemctl status docker

安装对应的docker镜像 1.安装tomcat镜像 2.安装Redis镜像

2. 根据名字下载docker,docker pull docker.io/redis 3.查看本地镜像

docker images

4.运行redis

docker run -itd --name redis-test -p 6379:6379 redis

docker run -p 6380 :6379 --name redis -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

3.安装RabbitMq

1.安装 docker pull rabbitmq 2.运行

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq

3.运行 然后执行docker ps查看rabbitmq的id,在执行命令docker exec -it 镜像ID /bin/bash进入容器里面,执行命令: rabbitmq-plugins enable rabbitmq_management这时候rabbitmq就配置完成了,可以通过访问http://linuxip地址:15672,这里的用户名和密码默认都是guest 4.网页浏览 ip+端口15672

4.Nginx安装

nginx运行到镜像里面之后,他默认与宿主机是桥接的网络,上面配置的端口映射就是把宿主机的80端口给了它,让它用了。正常情况的运营下,我们不希望每次都要登录容器去修改nginx的相关配置,所以这里使用docker的数据卷,把镜像里面的目录挂载到宿主机对应的文件路径中,这样我们只需要管理宿主机的配置文件即可,更重要的一点就是,镜像中产生的所有数据,都会在镜像被删除后消失!

# 把镜像里面的配置路径,同步到宿主机的目录,这样nginx跑的环境独立,配置文件确可以在外面修改 docker run -it -v /宿主机目录:/容器目录 镜像名 # 新手可以先启动一个镜像,然后通过命令进入到容器里面,找到对应的目录,然后对应的配置下即可 # 一个完整的例子 docker run -d -p 80:80 \ -p 443:443 \ --name tommynginx \ --link answer-server:answerserver \ -v /usr/local/docker/nginx/html:/usr/share/nginx/html \ -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /usr/local/docker/nginx/logs:/var/log/nginx \ nginx

先创建一个nginx文件夹,专门用于存放镜像映射的文件数据,当然创建文件夹很烦,写了个脚本统一创建一下,在你创建好的nginx文件夹下,运行以下脚本即可

#!/bin/bash # #******************************************************************** #Author: tommy #QQ: 3431463 #Date: 2021-04-02 #FileName: nginx.sh #URL: https://blog.csdn.net/u010381752 #Description: create nginx's volume dir #Copyright (C): 2021 All rights reserved #******************************************************************** # echo "create nginx dir" mkdir conf mkdir html mkdir conf/conf.d mkdir conf/conf.conf mkdir logs cat > conf/nginx.conf <<eof user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } eof echo "finished"

**

运行挂载数据卷的镜像

一个最简单容器中nginx.conf配置文件内容

user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } # 运行之前,先删除你之前测试运行的镜像跟容器 # 镜像 docker images # 删除镜像(加-f 为强制删除) docker rmi -f 镜像id # 容器 docker ps -a # 一般情况下我们删除容器中运行的镜像 docker stop CONTAINER ID/容器NAMES # 删除容器 docker rm CONTAINER ID/容器NAMES # 拿我本机为例,运行一个最小的nginx镜像,并且挂载数据卷目录到宿主机中的对应文件夹 # 值得注意的是,既然我们在启动命令中,使用了我们外面的nginx.conf的配置文件 # 那么事先我们就必须创建好这个文件并且,放到对应的目录下,而且配置好,新手直接复制粘贴我上面的 docker run -d -p 80:80 \ -v /home/tommy/docker/nginx/html:/usr/share/nginx/html \ -v /home/tommy/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/tommy/docker/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /home/tommy/docker/nginx/logs:/var/log/nginx \ -d nginx:1.19.9-alpine

参考 创建映射目录

1.安装nginx

docker pull nginx

2.运行nginx

docker run --rm --name nginx-text -p 8081:80 -d nginx 其中,该命令的四个命令行参数的含义如下。 –rm:容器终止运行后,自动删除容器文件。 –name nginx-test:容器的名字叫做nginx-test,名字自己定义. -p: 端口进行映射,将本地 8081 端口映射到容器内部的 80 端口 -d:容器启动后,在后台运行 使用docker ps -a 可以查询启动的容器

3.浏览器访问

ip+端口号访问(8081)

查询docker的镜像:

命令:docker search docker search tomcat 搜索tomcat镜像

根据名字下载docker,docker pull docker.io/tomcat

启动tomcat docker run -d -p 8089:8080 docker.io/tomcat 解释: -d表示后台运行,-p端口映射,前面的8089是外网访问端口(也就是本机ip对外开放的端口),后面8080是docker容器内部的端口。 通过docker ps 查看运行状态

浏览器访问,看tomcat是否启动

准备一个war包 打包方式改为:war 在设置访问的路径:在build标签下增加finalName,就是项目名了,如果不加,项目名就是你的项目包itmei-test,生成的war包名称也是itmei-test.war,浏览器访问的时候项目名字太长了。这一步看个人爱好

三、将war包放在tomcat容器的webapps下启动war包

1、随便创建一个文件夹,用来存放上传的war包,我放在了根目录/下了 mkdir warPackage,然后将文件传到该目录下

2、将war包拷贝进tomcat容器的webapps目录下 2.1 需要知道运行的tomcat容器的容器ID,运行docker ps 2.2、拷贝war包进tomcat容器的webapps目录下,命令格式:docker cp xxx.war包路径 容器ID:/要复制过去的目录路径,使用命令docker cp cs.war NAMES(名称)/CONTAINAER ID(容器ID ) /usr/local/tomcat/webapps,进行部署过去,

然后通过命令docker exec CONTAINER ID ls /usr/local/tomcat/webapps进行查看部署的项目。

有人找不到tomcat容器的部署目录webapps,我们首先进入到容器里面,通过命令docker exec 容器ID -it bash进入容器才能找到/usr/loca/tomcat/webapps这个目录,可以通过exit 退出这个容器路径 3、重启容器:docker restart +容器ID 4.通过浏览器访问:ip:docker的对外端口/项目打包名称

五、使用挂载目录启动war包

挂载就是在服务器单独创建一个目录,然后映射到tomcat下的webapps的路径,这样tomcat就能读取外部文件夹中的文件了

1、为了省事,我就直接使用上面创建的/warPackage文件夹

2、进行挂载目录,运行tomcat容器,设置开机自启:–restart=always

docker run -d -p 8089:8080 -v /warPackage/:/usr/local/tomcat/webapps –restart=always docker.io/tomcat

docker run --name tomcat-service -d -p 8080:8080 -v /home/mjw/warPackage:/usr/local/tomcat/webapps tomcat 解析: –name tomcat-service :给服务取名称 -d 后台运行 -p 8080:8080:端口映射,前面的8080是外网访问 后面的8080是映射容器的端口 -v /home/mjw/warPackage:/usr/local/tomcat/webapps: 用-v挂载主机数据卷到容器内 冒号前面的是本机文件夹,冒号后面是docker的容器需要挂载的目录文件

再通过进入tomcat目录,能看到已经在webapps下了

3、浏览器访问 ip+端口


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Linux