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