一、直接使用仓库镜像

1、查看仓库tomcat
docker search tomcat
NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   3174                [OK]                
tomee                         Apache TomEE is an all-Apache Java EE certif…   93                  [OK]                
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   58                                      [OK]

2、拉取最新版本
docker pull tomcat
3、查看本地镜像
[root@dex ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
tomcat                latest              b0e0b0a92cf9        3 weeks ago         680MB

4、将镜像制作为容器
docker run -p 8085:8080 --name tomcatContainer -d tomcat

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

[root@dex opt]# wget localhost:8085
--2021-11-14 13:00:03--  http://localhost:8085/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8085... connected.
HTTP request sent, awaiting response... 404 
2021-11-14 13:00:03 ERROR 404: (no description).

5、进入容器查看问题
[root@dex opt]# docker exec -u root -it tomcatContainer /bin/bash
root@31f2:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.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-14 09:38:33--  http://localhost:8085/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8085... failed: Connection refused.
Connecting to localhost (localhost)|::1|:8085... failed: Network is unreachable.
6、将war好拷贝到tomcat的webapps目录下
[root@dex opt]# docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                              NAMES
31f2e214cdbb        tomcat                    "catalina.sh run"        14 minutes ago      Up 14 minutes       0.0.0.0:8085->8080/tcp             wechatTomcat

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

[root@dex ~]# ll /opt/warPackage/
total 1202712
-rw-r--r-- 1 root root 1231571513 Nov 14 17:55 fluviolacu-0.0.1-SNAPSHOT.war

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

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

    docker cp /warPackage/fluviolacu-0.0.1-SNAPSHOT.war 31f2e214cdbb:/usr/local/tomcat/webapps
7、重启容器

重启容器:docker restart +容器ID

docker restart 31f2e214cdbb
8、使用挂载文件完成war发布

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

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

[root@dex ~]# docker run -v /opt/warPackage/:/usr/local/tomcat/webapps/ -p 8085: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
total 209996
-rw-r--r-- 1 root root  11442169 Dec  3  2020 apache-tomcat-9.0.41.tar.gz
-rw-r--r-- 1 root root       719 Nov 15 19:22 Dockerfile
-rw-r--r-- 1 root root 194042837 Nov 15 17:34 jdk-8u202-linux-x64.tar.gz

Dockerfile文件内容也很简单

[root@dex tomcat_image_create_dir]# cat Dockerfile 
FROM centos:7.8.2003

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

#定义交互时登录路径
ENV MYPATH /usr/local
WORKDIR $MYPATH

#配置jdk 和tomcat环境变量
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_202
ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-9.0.41
ENV CATALINA_BASE /usr/local/tomcat/apache-tomcat-9.0.41
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#设置暴露的端口
EXPOSE 8080

#运行tomcat
CMD /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 

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

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐