Linux使用Docker部署tomcat的war包以及使用到的应用超详细

一.准备前期:

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

二、开始配置:
前言:

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

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

1 、安装tomcat镜像并启动

  1. 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镜像
在这里插入图片描述

  1. 根据名字下载docker,docker pull docker.io/tomcat
    在这里插入图片描述

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

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

  4. 准备一个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
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 使用Docker安装Tomcat部署WAR的步骤如下: 1.首先需要安装DockerDocker Compose。 2.创建一个Dockerfile文件,其中Tomcat的安装和配置。 3.将WAR复制到Dockerfile所在的目录中。 4.创建一个docker-compose.yml文件,其中Tomcat容器的配置和WAR的挂载。 5.执行docker-compose up命令启动容器。 6.访问http://localhost:8080/deployed_war_file路径,即可查看部署WAR应用。 ### 回答2: 首先,为了在Docker部署Tomcat,我们需要创建一个Docker镜像,该镜像含了Tomcat的安装和配置。我们可以使用一个基础镜像(如CentOS),在其中安装Tomcat,然后保存该镜像以便以后使用。我们可以使用Dockerfile来构建这个镜像,Dockerfile中含了所有步骤,可以简化镜像的构建和维护。 以下是一个使用Dockerfile构建Tomcat镜像的示例: ``` FROM centos:latest RUN yum -y install wget RUN wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz RUN tar -xzf apache-tomcat-8.5.23.tar.gz RUN mv apache-tomcat-8.5.23 /usr/local/tomcat ENV CATALINA_HOME /usr/local/tomcat ENV PATH $CATALINA_HOME/bin:$PATH EXPOSE 8080 CMD [“catalina.sh”, “run”] ``` 这个Dockerfile执行以下操作: - 基于CentOS镜像构建一个新的镜像 - 安装wget,以便后续下载Tomcat - 下载Tomcat 8.5.23版本的压缩,并解压到/usr/local/tomcat目录下 - 设置环境变量CATALINA_HOME和PATH - 暴露Tomcat的默认端口8080 - 启动Tomcat 使用以上Dockerfile创建TomcatDocker镜像,然后我们就可以在该镜像上部署warwar是Web应用程序的一种打方式,通常含了所有的源代码、配置文件和依赖库。war可以通过Tomcat的webapps目录进行部署。 以下是具体的步骤: 1. 将war放到一个本地目录下,如:/data/webapp/ 2. 使用以下命令将war拷贝到Tomcat的webapps目录下: ``` docker run -it -v /data/webapp:/usr/local/tomcat/webapps my-tomcat-image cp /data/webapp/my-webapp.war /usr/local/tomcat/webapps/ ``` 其中,/data/webapp是本地目录,my-tomcat-image是TomcatDocker镜像名称,my-webapp.war是要部署war名称。 3. 启动Tomcat容器,命令如下: ``` docker run -d -p 8080:8080 my-tomcat-image ``` 其中,-d表示在后台运行容器,-p表示将Tomcat的端口8080映射到主机的端口8080。 完成以上步骤后,Tomcat容器将会在后台运行部署的web应用程序也会自动启动。我们可以使用浏览器访问http://localhost:8080/my-webapp来访问该应用程序。 ### 回答3: Docker 是一种轻量级的容器化技术,可以将应用程序和其依赖的库打成一个可移植的容器,方便部署和管理。Tomcat 是一个常用的 Java Web 应用程序服务器,通过 Docker 可以快速部署运行 Tomcat。以下是在 Docker 中安装 Tomcat部署 war 的步骤: 1. 安装 DockerLinux 下可以通过命令行方式安装 Docker。在 Windows 和 macOS 下可以通过 Docker Desktop 进行安装。 2. 下载 Tomcat 镜像 在 Docker Hub 上搜索 Tomcat 镜像,选择适合的版本进行下载。 3. 启动容器 使用下载的 Tomcat 镜像启动一个容器: ``` docker run -d --name=my-tomcat -p 8080:8080 tomcat:latest ``` 上述命令会在后台启动一个名为 my-tomcat 的容器,并将主机的 8080 端口映射到容器的 8080 端口。 4. 上传 war 将需要部署war 上传到容器中: ``` docker cp app.war my-tomcat:/usr/local/tomcat/webapps/ ``` 上述命令将 app.war 拷贝到容器内 Tomcat 的 webapps 目录中。 5. 访问应用程序 在浏览器中访问容器所在主机的 8080 端口: ``` http://localhost:8080/app ``` 其中,app 是 war 的文件名(不含 .war 后缀)。 以上就是在 Docker 中安装 Tomcat部署 war 的步骤。 Docker 技术的魅力在于它的可移植性和易于管理,使得应用程序的部署和维护变得更加简单和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi梅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值