第一步 准备Tomcat 和 JDK的安装包

在Docker 中, Tomcat 是运行在Linux上的, 所以我们的Docker File 要基于Centos.
同时, 要运行Tomcat jdk也是必要的。

对于Centos 我们使用官方的镜像就ok了

因为学习关系, Tomcat和jdk的压缩包就自己准备, 不使用官方的。

[gateman@i-93f6y1io tomcat1]$ ls -l
总用量 200944
-rw-rw-r-- 1 gateman gateman       930 2月  24 01:07 Dockerfile
-rw-rw-r-- 1 gateman gateman 195337531 2月  23 22:09 jdk8.tar.gz
-rw-rw-r-- 1 gateman gateman         0 2月  23 22:15 readme.txt
-rw-rw-r-- 1 gateman gateman  10424147 2月  23 23:23 tomcat8.tar.gz
drwxrwxr-x 3 gateman gateman        19 2月  23 22:53 usr
[gateman@i-93f6y1io tomcat1]$

第二步 创建挂载的日志目录

因为我们用的容器, 就不打算暴露webapps了, 只暴露日志目录方便trouble shooting.

[gateman@i-93f6y1io tomcat1]$ pwd
/home/gateman/docker/dockerfile/tomcat1
[gateman@i-93f6y1io tomcat1]$ mkdir -p /usr/local/Tomcat/logs

第三步 编写DockerFile

FROM centos     #基于 centos 必须
MAINTAINER nvd11@163.com  #作者信息RUN groupadd -r rad && useradd -r -u 1000 -g rad gateman #创建启动tomcat的用户, uid 一定要与宿主机的对应用户一样, 否则生成logs无读权限
RUN useradd -r -g rad radrel #创建另1个用户COPY readme.txt /usr/local/readme.txt   #Copy 文件到容器ADD jdk8.tar.gz /usr/local/             #ADD 相对于 COPY 有自动解压的功能
ADD tomcat8.tar.gz /usr/local/          #ADD 相对于 COPY 有自动解压的功能RUN chown -R radrel:rad /usr/local/Tomcat8          #令gateman accoun有启动tomcat的权限
RUN chown -R radrel:rad /usr/local/java-8-oracle
RUN chmod -R 755 /usr/local/Tomcat8
RUN chmod -R 755 /usr/local/java-8-oracle
RUN chmod g+w /usr/local/Tomcat8/logs                #令gateman accoun有写log权限
RUN chmod g+w /usr/local/Tomcat8/work                #令gateman 有些work 文件权限(jsp 临时classes)
RUN rm -f /usr/local/Tomcat8/logs/catalina.out       #删除原来的log文件, 万一原文件由其他用户创建就无法写入
RUN rm -rf /usr/local/Tomcat8/work/*                 #https://www.cnblogs.com/meitian/p/9078980.htmlENV MYPATH /usr/local                               #定义环境变量
WORKDIR $MYPATH                                     #设置容器工作目录ENV JAVA_HOME /usr/local/java-8-oracle
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/Tomcat8
ENV CATALINA_BASH /usr/local/Tomcat8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/binEXPOSE 8080                                          #令容器对外暴露端口USER gateman                                        #使用gateman账号启动tomcat 否则tomcat 由root启动, 那么挂载在外面的日志文件是root的, 无法查看
CMD /usr/local/Tomcat8/bin/startup.sh && tail -F /usr/local/Tomcat8/logs/catalina.out

第四步 创建镜像

docker build -t rad_tomcat1:0.9 .

第五步 运行镜像

docker run -d -p 3351:8080 -v /home/gateman/docker/dockerfile/tomcat1/usr/local/Tomcat/logs:/usr/local/Tomcat8/logs --name rad_tomcat1 rad_tomcat1:0.9

Docker 创建1个自己的Tomcat 镜像相关推荐

  1. Docker创建Dockerfile脚本构建jdk1.8镜像并启动容器示例

  2. docker制作tomcat镜像并部署war包

    模拟面试小白: 需求:有一台没有网络的服务器,使用docker部署war包,没有tomcat镜像,限时30分钟. 小白:没网部署war包干啥,是不是工作不饱和让你们太闲了. 我:傻瓜,怪我没表达清楚, ...

  3. Docker创建 tomcat/weblogic 集群

    安装 tomcat 镜像 准备好需要的 jdk.tomcat 等软件放到 home 目录下面,启动一个容器 docker run -t -i -v /home:/opt/data --name mk_ ...

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

    文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...

  5. 使用Dockerfile创建一个tomcat镜像

    docker已经看了有一段时间了,对镜像和容器也有了一个大致了解,制作一个tomcat镜像 1.首先下载linux环境的tomcat,并解压至tomcat目录 ls /tomcat apache-to ...

  6. 用python批量创建docker_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3...

    从上篇docker commit学习可以了解到,镜像的定制其实每一层添加的配置和文件,如果把每一层的修改配置,修改文件,都写入脚本,用这个脚本构建定制镜像,无法重复的问题,镜像构建透明性的问题,体积的 ...

  7. python docker实战_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3

    从上篇docker commit学习可以了解到,镜像的定制其实每一层添加的配置和文件,如果把每一层的修改配置,修改文件,都写入脚本,用这个脚本构建定制镜像,无法重复的问题,镜像构建透明性的问题,体积的 ...

  8. Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

    Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线 Dockerfile概述 Dockerfile构建过程 Dockerfile指令说明 实战:构建自己的CentO ...

  9. Docker安装Tomcat镜像并部署web项目简述

    一.安装Tomcat 1.查找Docker Hub上的tomcat镜像 docker search tomcat 2.拉取官方的镜像 docker pull tomcat 等待下载完毕,需要一些时间. ...

最新文章

  1. 深度研究自然梯度优化,从入门到放弃 | Deep Reading
  2. revit如何根据坐标进行画线_护肤干货丨抗衰老的护肤品有哪些?如何根据成分进行挑选?(1)...
  3. bzoj2618 [Cqoi2006]凸多边形
  4. c++ 删除二叉树的子树_平衡二叉树
  5. codeforces 59A-C语言解题报告
  6. uniitest怎么传参数
  7. 用PHPnow搭建PHP+MYSQL网站开发环境
  8. 简述相关与回归分析的关系_分类数据与分类数据的相关关系分析
  9. 02 Toolbar的使用
  10. I2c-tools工具使用及调试
  11. 《分布式系统概念与设计》读书笔记(第零章)
  12. 基于电子商务网站开发的项目管理计划设计
  13. 国内ERP系统和SAP系统架构存在哪些差异?
  14. C语言手写爱心-还原最新热剧撩妹代码
  15. android 自定义特效,Android 自定义控件~流光特效
  16. 华为云服务器无法使用smtp发送邮件
  17. MySQL引擎的理解
  18. kali下的免杀之veil安装步骤
  19. uC/OS iii(三)任务管理之任务状态
  20. 益聚星荣:UP主捡块石头搓出个CPU?恕我直言,人类做不到

热门文章

  1. [trustzone]-ARM Core的扩展和ELx级别的切换过程
  2. Cheat Engine教程关卡密码
  3. 异常记录(CPU产生的异常和软件模拟产生的异常)
  4. c++ lambda基本语法
  5. Windows进程与线程学习笔记(二)—— 线程结构体
  6. PE学习(二) IMAGE_DOS_HEADER
  7. 【Alertmanager】腾讯企业邮箱配置
  8. jQuery -- touch事件之滑动判断(左右上下方向)
  9. 3、 AUTO_INCREMENT:主键自增长
  10. 3、绘制E-R图:数据库概要设计阶段