一、准备工作
在宿主机上创建一个tomcat文件夹用来存放我们的压缩文件。
第一步:创建一个tomcat文件夹
mkdir tomcat
第二步:把我们需要的压缩包放进去,以便我们查找文件
scp -P 1111 -r jdk-8u301-linux-x64.tar.gz root@127.0.0.1:/wj/tomcat
scp -P 1111 -r apache-tomcat-9.0.14.tar.gz root@127.0.0.1:/wj/tomcat
二、编写dockerfile文件
FROM centos
MAINTAINER wj<893932747@qq.com>
#这里是复制文件到指定的文件
COPY explain.txt /usr/local/explain.txt
#使用ADD命令会自动给解压
ADD jdk-8u301-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.55.tar.gz /usr/local/
#安装vim
RUN yum -y install vim
#设置默认目录,只要进来就在这个目录
ENV MYPATH /usr/local
#设置工作目录
WORKDIR $MYPATH
#配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_301
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.55
ENV CATALINA_BASH /usr/loocal/apache-tomcat-9.0.55
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#暴漏一个端口
EXPOSE 8080
#创建后就启动并输出日志
CMD /usr/local/apache-tomcat-9.0.55/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.55/bin/logs/catalina.out
三、生成镜像
docker build -t diytomcat .
[root@muyuan tomcat]# docker build -t diytomcat .
Sending build context to Docker daemon 181.8MB
Step 1/15 : FROM centos
---> 5d0da3dc9764
Step 2/15 : MAINTAINER wj<893932747@qq.com>
---> Running in a7807975fb82
Removing intermediate container a7807975fb82
---> 6977c05ad774
Step 3/15 : COPY explain.txt /usr/local/explain.txt
---> 2d761deed0bb
Step 4/15 : ADD jdk-8u301-linux-x64.tar.gz /usr/local/
---> b8e7e60e8913
Step 5/15 : ADD apache-tomcat-9.0.14.tar.gz /usr/local/
---> 6a359021e161
Step 6/15 : RUN yum -y install vim
---> Running in 68aa97c75713
CentOS Linux 8 - AppStream 20 kB/s | 7.9 MB 06:37
CentOS Linux 8 - BaseOS 3.1 MB/s | 2.6 MB 00:00
CentOS Linux 8 - Extras 14 kB/s | 10 kB 00:00
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vim-enhanced x86_64 2:8.0.1763-16.el8 appstream 1.4 M
Installing dependencies:
gpm-libs x86_64 1.20.7-17.el8 appstream 39 k
vim-common x86_64 2:8.0.1763-16.el8 appstream 6.3 M
vim-filesystem noarch 2:8.0.1763-16.el8 appstream 49 k
which x86_64 2.21-16.el8 baseos 49 k
Transaction Summary
================================================================================
Install 5 Packages
Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm 15 kB/s | 39 kB 00:02
(2/5): vim-filesystem-8.0.1763-16.el8.noarch.rp 9.4 kB/s | 49 kB 00:05
(3/5): which-2.21-16.el8.x86_64.rpm 460 kB/s | 49 kB 00:00
(4/5): vim-enhanced-8.0.1763-16.el8.x86_64.rpm 13 kB/s | 1.4 MB 01:46
(5/5): vim-common-8.0.1763-16.el8.x86_64.rpm 7.7 kB/s | 6.3 MB 14:07
--------------------------------------------------------------------------------
Total 9.4 kB/s | 7.8 MB 14:08
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream 1.6 MB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : which-2.21-16.el8.x86_64 1/5
Installing : vim-filesystem-2:8.0.1763-16.el8.noarch 2/5
Installing : vim-common-2:8.0.1763-16.el8.x86_64 3/5
Installing : gpm-libs-1.20.7-17.el8.x86_64 4/5
Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64 4/5
Installing : vim-enhanced-2:8.0.1763-16.el8.x86_64 5/5
Running scriptlet: vim-enhanced-2:8.0.1763-16.el8.x86_64 5/5
Running scriptlet: vim-common-2:8.0.1763-16.el8.x86_64 5/5
Verifying : gpm-libs-1.20.7-17.el8.x86_64 1/5
Verifying : vim-common-2:8.0.1763-16.el8.x86_64 2/5
Verifying : vim-enhanced-2:8.0.1763-16.el8.x86_64 3/5
Verifying : vim-filesystem-2:8.0.1763-16.el8.noarch 4/5
Verifying : which-2.21-16.el8.x86_64 5/5
Installed:
gpm-libs-1.20.7-17.el8.x86_64 vim-common-2:8.0.1763-16.el8.x86_64
vim-enhanced-2:8.0.1763-16.el8.x86_64 vim-filesystem-2:8.0.1763-16.el8.noarch
which-2.21-16.el8.x86_64
Complete!
Removing intermediate container 68aa97c75713
---> eb84bc8ae4a2
Step 7/15 : ENV MYPATH /usr/local
---> Running in 39a356debcae
Removing intermediate container 39a356debcae
---> 517215a02ce5
Step 8/15 : WORKDIR $MYPATH
---> Running in 2bca6fb07ceb
Removing intermediate container 2bca6fb07ceb
---> 4b45f65c5381
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0.31
---> Running in 647d1fe9f9c4
Removing intermediate container 647d1fe9f9c4
---> b7c4090849fc
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Running in cb9678d748bc
Removing intermediate container cb9678d748bc
---> 1d20d99b9256
Step 11/15 : ENV CATALA_HOME /usr/local/apache-tomcat-9.0.14
---> Running in 8b942425ef32
Removing intermediate container 8b942425ef32
---> c0cb87e9bf37
Step 12/15 : ENV CATALA_BASH /usr/loocal/apache-tomcat-9.0.14
---> Running in 277eafab3720
Removing intermediate container 277eafab3720
---> a76b3fe59bac
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
---> Running in d8cbbefb8104
Removing intermediate container d8cbbefb8104
---> 4a7d67fb1277
Step 14/15 : EXPOSE 8080
---> Running in 9ab1094e962a
Removing intermediate container 9ab1094e962a
---> 972165d56d05
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.14/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.14/bin/logs/catalina.out
---> Running in a2b8393438f3
Removing intermediate container a2b8393438f3
---> eb52972c56ea
Successfully built eb52972c56ea
Successfully tagged diytomcat:latest
diytomcat生成!大功告成!
四、启动自定义镜像
启动命令
docker run -d -p 9090:8080 --name mydiytomcat -v /wj/tomcat/test:/usr/local/apache-tomcat-9.0.55/webapps/test -v /wj/tomcat/logs:/usr/local/apache-tomcat-9.0.55/logs diytomcat
-p:把8080端口映射到9090端口上
–name:来个名称
-v:挂载日志,挂载webapps
[root@muyuan tomcat]# docker run -d -p 9090:8080 --name mydiytomcat -v /wj/tomcat/test:/usr/local/apache-tomcat-9.0.14/webapps/test -v /wj/tomcat/logs:/usr/local/apache-tomcat-9.0.14/logs diytomcat
a1f4814f477a7182bde283b563d878141ec2801e562713b563b6926660a7b209
这就成功了,进入容器发现直接就是我们指定的默认文件夹,这里可以发现我们打包的tomcat,jdk,还有我们的explain.txt文件,全部都在。
docker inspect 容器id
这里有几个小插曲:
1,文件路径,在dockerfile文件中 ENV CATALA_HOME /usr/local/apache-tomcat-9.0.14
ENV CATALA_BASH /usr/loocal/apache-tomcat-9.0.14这两个地方的地址出现了不匹配的情况,为什么不匹配是我自己定义的路径名和add时自动解压的路径不一致
2,日志不报错了,但是访问还是没有页面,ROOT下没页面
这个时候我想发布项目其实直接在本机挂载的目录下进行就完事大吉。
1,在挂载的文件夹下创建index.jsp页面和WEB_INF文件夹
在WEB-INF文件夹下创建web.xml文件
web.xml
<web-app id="MyStrutsApp" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
index.jsp直接复制tomcat的首页页面
刷新浏览器,