Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

简介: Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

image.png


Pre

Docker Review - dockerfile 入门篇

Docker Review - dockerfile 实战_给基础镜像增加功能


Docker 官方镜像 Dockerfile


https://github.com/docker-library/docs

以tomcat为例


dec56fde248a48c6bafd001d734b8cde.png


看着里面的地址,

或者直接点击如下的链接

3e5de4152caa4ae09fc37f9924f3fc41.png


dockerfile制作tomcat镜像

准备软件

tomcat + JDK

82183de150b24426977dd8fa47602b1f.png


编写Dockerfile文件

FROM centos
MAINTAINER artisan
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u161-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.44.tar.gz /usr/local/
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.44
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.44
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.44/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.44/bin/logs/catalina.out


ADD 有能力自动解压文件。如果<src>参数是一个可识别的压缩格式(tar, gzip, bzip2, etc)的本地文件 ,就会被解压到指定容器文件系统的路径<dest>


dockerfile构建镜像

[root@VM-0-7-centos jdk]# docker build -f tomcat-dockerfile -t xxxtomcat  .
Sending build context to Docker daemon  380.8MB
Step 1/14 : FROM centos
 ---> 5d0da3dc9764
Step 2/14 : MAINTAINER artisan
 ---> Using cache
 ---> f19684f6e082
Step 3/14 : COPY readme.txt /usr/local/readme.txt
 ---> Using cache
 ---> be6de2a66c66
Step 4/14 : ADD jdk-8u161-linux-x64.tar.gz /usr/local/
 ---> Using cache
 ---> 4a3259261dea
Step 5/14 : ADD apache-tomcat-9.0.44.tar.gz /usr/local/
 ---> Using cache
 ---> 287bd3c3c17d
Step 6/14 : ENV MYPATH /usr/local
 ---> Using cache
 ---> 9f7b7e781819
Step 7/14 : WORKDIR $MYPATH
 ---> Using cache
 ---> 8c6faa53c274
Step 8/14 : ENV JAVA_HOME /usr/local/jdk1.8.0_161
 ---> Using cache
 ---> a5eddd2652a9
Step 9/14 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Using cache
 ---> 7dbc598b3f58
Step 10/14 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.44
 ---> Using cache
 ---> 2b7eb2d574f9
Step 11/14 : ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.44
 ---> Using cache
 ---> cff7c91e7b1d
Step 12/14 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 ---> Using cache
 ---> c19425f9f62d
Step 13/14 : EXPOSE 8080
 ---> Using cache
 ---> 067a0f5eb770
Step 14/14 : CMD /usr/local/apache-tomcat-9.0.44/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.44/bin/logs/catalina.out
 ---> Using cache
 ---> c5b9494ea9b1
Successfully built c5b9494ea9b1
Successfully tagged xxxtomcat:latest

4e371f039e8940ea9e412ec9dec94195.png


启动镜像

端口映射 + 挂载目录

[root@VM-0-7-centos jdk]# docker run -d -p 7979:8080 --name xgjtomcat -v /root/tomcat/test:/usr/local/apache-tomcat-9.0.44/webapps/test -v /root/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.44/logs artisantomcat


观察本地的宿主机的目录 /root/tomcat/test 和 /root/tomcat/tomcatlogs ,会自动创建。


测试访问tomcat


00acb7cdacd24d859ae430ba35b02827.png

根据映射

-v /root/tomcat/test:/usr/local/apache-tomcat-9.0.44/webapps/test 
 -v /root/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.44/logs


到挂载test的目录下 ,创建一个简单的项目,看看能不能正常运行

新建一个WEB-INF目录,然后创建一个web.xml文件,接着创建一个index.jsp文件


[root@VM-0-7-centos tomcat]# pwd
/root/tomcat
[root@VM-0-7-centos tomcat]#
[root@VM-0-7-centos tomcat]# ls
test  tomcatlogs
[root@VM-0-7-centos tomcat]# cd test/
[root@VM-0-7-centos test]#
[root@VM-0-7-centos test]# ll
total 0
[root@VM-0-7-centos test]# mkdir WEB-INF
[root@VM-0-7-centos test]# ll
total 8
-rw-r--r-- 1 root root  150 Oct 14 23:41 index.jsp
drwxr-xr-x 2 root root 4096 Oct 14 23:43 WEB-INF


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
                    version="2.5">
</web-app>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tomcat</title>
</head>
<body>
    <h1>
        hello,artisan
    </h1>
</body>
</html>

afc43dd6823d483c8744f9b915ddd44f.png

映射后,和宿主机的目录是实时的,我们连到容器里去看看


a7d7f280197a4726bf5c97e75ffadf58.png

OK , 一个tomcat镜像成功的创建成功了。

相关文章
|
6月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
479 100
|
6月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
444 99
|
6月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
603 98
|
6月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
5月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
692 6
|
6月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
288 8
|
7月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
478 16
|
7月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
|
Java 应用服务中间件
【收藏】基于Dockerfile搭建JAVA Tomcat运行环境
http://www.blogjava.net/yongboy/archive/2013/12/16/407643.html $(function () { $('pre.prettyprint code').each(function () { var l
950 0