docker使用tomcat发布war

2022-06-23 10:26:44

一、直接使用仓库镜像

1、查看仓库tomcat

docker search tomcatNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
tomcat                        Apache Tomcat is an open source implementati…3174[OK]                
tomee                         Apache TomEE is an all-Apache JavaEE certif…93[OK]                
dordoka/tomcat                Ubuntu14.04, OracleJDK8 and Tomcat8 base…58[OK]

2、拉取最新版本

docker pull tomcat

3、查看本地镜像

[root@dex~]# docker imagesREPOSITORYTAGIMAGEIDCREATEDSIZE
tomcat                latest              b0e0b0a92cf93 weeks ago680MB

4、将镜像制作为容器

docker run-p8085:8080--name tomcatContainer-d tomcat

使用wget 测试链接,发现是404?

[root@dex opt]# wget localhost:8085--2021-11-1413:00:03--  http://localhost:8085/
Resolvinglocalhost(localhost)...127.0.0.1,::1
Connecting tolocalhost(localhost)|127.0.0.1|:8085... connected.HTTP request sent, awaiting response...4042021-11-1413:00:03ERROR404:(no description).

5、进入容器查看问题

[root@dex opt]# docker exec-u root-it tomcatContainer/bin/bash
root@31f2:/usr/local/tomcat# lsBUILDING.txtCONTRIBUTING.mdLICENSENOTICEREADME.mdRELEASE-NOTESRUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work

cd到webapps 发现是个空文件夹?

root@31f2:/usr/local/tomcat/webapps# ls
root@31f2:/usr/local/tomcat/webapps#

但发现有一个webapps.dist,于是cd到该目录下发现了需要的ROOT, examples等文件

ROOT  docs  examples  host-manager  manager

于是将webapps.dist修改为webapps

mv webapps.dist webapps

再次运行wget 测试发现可以了

root@31f2:/usr/local/tomcat/webapps/examples# wget localhost:8085--2021-11-1409:38:33--  http://localhost:8085/
Resolvinglocalhost(localhost)...127.0.0.1,::1
Connecting tolocalhost(localhost)|127.0.0.1|:8085... failed: Connection refused.
Connecting tolocalhost(localhost)|::1|:8085... failed: Network is unreachable.

6、将war好拷贝到tomcat的webapps目录下

[root@dex opt]# docker psCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES31f2e214cdbb        tomcat"catalina.sh run"14 minutes ago      Up14 minutes0.0.0.0:8085->8080/tcp             wechatTomcat

先使用XFtp将war传入到对应的/opt/warPackage目录

[root@dex~]# ll/opt/warPackage/
total1202712-rw-r--r--1 root root1231571513 Nov1417:55 fluviolacu-0.0.1-SNAPSHOT.war

开始拷贝war包进tomcat容器的webapps目录下

命令格式:docker cp xxx.war包路径 容器ID:/要复制过去的目录路径

    docker cp/warPackage/fluviolacu-0.0.1-SNAPSHOT.war31f2e214cdbb:/usr/local/tomcat/webapps

7、重启容器

重启容器:docker restart +容器ID

docker restart31f2e214cdbb

8、使用挂载文件完成war发布

上面的拷贝war方式比较麻烦,容器关闭war也容易丢失,这里使用挂载的方式就简单多了

进行挂载目录,运行tomcat容器

[root@dex~]# docker run-v/opt/warPackage/:/usr/local/tomcat/webapps/-p8085:8080--name lakeRiverTomcat-d tomcat

二、使用Dockerfile 制作镜像

上面是使用官方的tomcat 镜像直接制作容器,这里我们自己配置dockerfile 来安照自己的需求制作镜像,

先创建一个tomcat_image_create_dir 目录

mkdir tomcat_image_create_dir

然后把对应的tomcat 和jdk 使用wget拉下来

$ wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz

其他版本自己可以去tomcat官网查看按需修改就好
复制链接

jdk wget 就直接去oracle官网找到对应版本复制链接,然后wget 拉取如

wget--no-check-certificate--no-cookies--header"Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

好了目录下有资源了,再使用vi 创建一个Dockerfile文件配置images

[root@dex tomcat_image_create_dir]# ll
total209996-rw-r--r--1 root root11442169 Dec32020 apache-tomcat-9.0.41.tar.gz-rw-r--r--1 root root719 Nov1519:22 Dockerfile-rw-r--r--1 root root194042837 Nov1517:34 jdk-8u202-linux-x64.tar.gz

Dockerfile文件内容也很简单

[root@dex tomcat_image_create_dir]# cat DockerfileFROM centos:7.8.2003

#拷贝tomcat jdk 到镜像并解压ADD apache-tomcat-9.0.41.tar.gz/usr/local/tomcatADD jdk-8u202-linux-x64.tar.gz/usr/local/jdk

#定义交互时登录路径ENVMYPATH/usr/localWORKDIR $MYPATH

#配置jdk 和tomcat环境变量ENVJAVA_HOME/usr/local/jdk/jdk1.8.0_202ENVCATALINA_HOME/usr/local/tomcat/apache-tomcat-9.0.41ENVCATALINA_BASE/usr/local/tomcat/apache-tomcat-9.0.41ENVCLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENVPATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#设置暴露的端口EXPOSE8080

#运行tomcatCMD/usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh&& tail-f/usr/local/tomcat/apache-tomcat-9.0.41/logs/catalina.out

制作镜像,直接在该目录下面

[root@dex tomcat_image_create_dir]# docker build  镜像名.

一回车等待执行完成,镜像就生成了

docker images

查看所有镜像,其他容器运行和(一、直接使用仓库镜像)完全相同

  • 作者:奔跑的痕迹
  • 原文链接:https://blog.csdn.net/qq_34817440/article/details/121320377
    更新时间:2022-06-23 10:26:44