热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker中Dockerfile如何自定义tomcat镜像

小编给大家分享一下docker中Dockerfile如何自定义tomcat镜像,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇

小编给大家分享一下docker中Dockerfile如何自定义tomcat镜像,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    1、创建目录

[root@t-docker chenzx]# mkdir tomcat9

    2、在上述目录下touch c.txt,为了演示copy指令的功能

[root@t-docker tomcat9]# touch c.txt

    3、将jdk和tomcat安装的压缩包拷贝进上一步目录

[root@t-docker tomcat9]# ls
atlassian-confluence-6.11.0.tar.gz  c.txt  jdk1.8.0_65.tar.gz

    4、新建Dockerfile文件

[root@t-docker tomcat9]# cat Dockerfile 
FROM centos
MAINTAINER chenzx
#把宿主机当前上下文的c.txt拷贝到容器/opt路径下
COPY c.txt /opt/container.txt
#用ADD指令把java和tomcat压缩包添加到容器中,并自动解压
ADD atlassian-confluence-6.11.0.tar.gz /opt
ADD jdk1.8.0_65.tar.gz /opt
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /opt
WORKDIR $MYPATH
#配置java与tomcat环境变量
ENV JAVA_HOME /opt/jdk1.8.0_65
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /opt/atlassian-confluence-6.11.0
ENV CATALINA_BASE /opt/atlassian-confluence-6.11.0
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
#ENTRYPOINT ["/opt/atlassian-confluence-6.11.0/bin/startup.sh"]
#CMD ["/opt/atlassian-confluence-6.11.0/bin/catalina.sh","run"]
CMD /opt/atlassian-confluence-6.11.0/bin/startup.sh && tail -F /opt/atlassian-confluence-6.11.0/logs/catalina.out

    5、构建

[root@t-docker tomcat9]# docker build -t tomcat9 .
Sending build context to Docker daemon    719MB
Step 1/15 : FROM centos
 ---> 5182e96772bf
Step 2/15 : MAINTAINER chenzx
 ---> Running in d04f35bb304d
Removing intermediate container d04f35bb304d
 ---> b1535d029856
Step 3/15 : COPY c.txt /opt/container.txt
 ---> ef3569b7b95d
Step 4/15 : ADD atlassian-confluence-6.11.0.tar.gz /opt
 ---> 0aed885f1740
Step 5/15 : ADD jdk1.8.0_65.tar.gz /opt
 ---> 56ef4a5d806c
Step 6/15 : RUN yum -y install vim
 ---> Running in 96d23e66cbc6
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
Step 7/15 : ENV MYPATH /opt
 ---> Running in f8b147007a67
Removing intermediate container f8b147007a67
 ---> 88cd40f1df40
Step 8/15 : WORKDIR $MYPATH
 ---> Running in 55ba5490990a
Removing intermediate container 55ba5490990a
 ---> 2bdeb9172d40
Step 9/15 : ENV JAVA_HOME /opt/jdk1.8.0_65
 ---> Running in e5edb170b825
Removing intermediate container e5edb170b825
 ---> 2b315b03c617
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in a3c6d7e8a539
Removing intermediate container a3c6d7e8a539
 ---> 5a49c2cefc2a
Step 11/15 : ENV CATALINA_HOME /opt/atlassian-confluence-6.11.0
 ---> Running in 6c105a803c9c
Removing intermediate container 6c105a803c9c
 ---> 8a4879a4d399
Step 12/15 : ENV CATALINA_BASE /opt/atlassian-confluence-6.11.0
 ---> Running in 894570c08307
Removing intermediate container 894570c08307
 ---> 843b28783e33
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 ---> Running in 14ea7d7ae882
Removing intermediate container 14ea7d7ae882
 ---> 2fbdf4cb96b6
Step 14/15 : EXPOSE 8080
 ---> Running in 0b55f91baea1
Removing intermediate container 0b55f91baea1
 ---> 340b421dfc43
Step 15/15 : CMD /opt/atlassian-confluence-6.11.0/bin/startup.sh && tail -F /opt/atlassian-confluence-6.11.0/logs/catalina.out
 ---> Running in 551c8481362e
Removing intermediate container 551c8481362e
 ---> 4edb0a9de409
Successfully built 4edb0a9de409
Successfully tagged tomcat9:latest
[root@t-docker tomcat9]#
  [root@t-docker tomcat9]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat9             latest              4edb0a9de409        3 minutes ago       1.3GB

    6、run

[root@t-docker tomcat9]#docker run -d -p 9080:8090 --name myt9 \
-v /volume/test:/opt/atlassian-confluence-6.11.0/test \
-v /volume/tomcatlogs:/opt/atlassian-confluence-6.11.0/logs \
--privileged=true \
tomcat9

-v就是数据卷的意思,volume

[root@t-docker tomcat9]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
a4174d4abeba        tomcat9             "/bin/sh -c '/opt/at…"   7 seconds ago       Up 6 seconds        8080/tcp, 0.0.0.0:9080->8090/tcp   myt9

    7、验证

docker中Dockerfile如何自定义tomcat镜像

[root@t-docker tomcat9]# docker exec  a4174d4abeba ls -l
total 0
drwxr-xr-x 1 1000 1000  42 Sep  2 03:41 atlassian-confluence-6.11.0
-rw-r--r-- 1 root root   0 Sep  2 02:38 container.txt
drwxr-xr-x 9 root root 268 Feb 24  2016 jdk1.8.0_65
drwxr-x--- 2 root root 102 Sep  2 03:41 logs

    8、综合前述的容器卷测试web服务的发布

以后发版,就在宿主机上的/volume/test里面发版即可,具体测试略。

[root@t-docker tomcat9]# cd /volume/test

[root@t-docker test]# mkdir WEB-INF

[root@t-docker test]# cd WEB-INF/

以上是“docker中Dockerfile如何自定义tomcat镜像”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程笔记行业资讯频道!


推荐阅读
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
author-avatar
hy11011_847
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有