Docker 创建1个自己的Tomcat 镜像

第一步 准备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.html

ENV 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/bin

EXPOSE 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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值