一、制作镜像

1.文件

  • jdk-8u162-linux-x64.tar.gz

  • apache-tomcat-8.5.82.tar.gz

  • scxx-web.war

2.目录

3.Dockerfile文件

结构图:

文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 基于centos镜像制作,拓展性更高
FROM centos
MAINTAINER buming<1340595077@qq.com>
# 将容器时间与时区设置为东八区上海时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
# 将jdk和tomcat安装包从宿主机拷贝到容器/usr/local/目录,拷贝会自动解压
ADD jdk-8u162-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.82.tar.gz /usr/local/
# 设置所有用户可执行权限
RUN chmod a+x /usr/local
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME $MYPATH/jdk1.8.0_162
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME $MYPATH/apache-tomcat-8.5.82
ENV CATALINA_BASH $MYPATH/apache-tomcat-8.5.82
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 通过设置设置环境变量来制定tomcat启动时jvm参数
ENV JAVA_OPTS $JAVA_OPTS -Xms500M -Xmx1G -DsysConfigPath="file:/usr/local/apache-tomcat-8.5.82/pldconfig/sysConfig.properties" -DdbConfigPath="file:/usr/local/apache-tomcat-8.5.82/pldconfig/dbconfig.properties" -DlogConfigPath="file:/usr/local/apache-tomcat-8.5.82/pldconfig/log4j.xml" -DmongoConfigPath="file:/usr/local/apache-tomcat-8.5.82/pldconfig/mongodb.properties" -DyhFundApiConfigPath="file:/usr/local/apache-tomcat-8.5.82/pldconfig/customerApi.properties" -Dfile.encoding=utf-8 -Duser.timezone=GMT+08
ADD scxx-web.war $CATALINA_HOME/webapps
EXPOSE 8080
WORKDIR $CATALINA_HOME/bin
RUN chmod a+x $CATALINA_HOME/bin/startup.sh
# 将自定义配置文件目录设置为tomcat跟目录pldconfig文件夹中
VOLUME ["$CATALINA_HOME/logs/","$CATALINA_HOME/pldconfig"]
# 注意:tail -F ,这里如果用小写的f,启动容器的时候打印完日志后会退出,用大写-F容器才会停留
CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/logs/catalina.out

4.构建

在制作镜像目录下执行

1
docker build -t report .

5.导出镜像

1
docker save report > report.tar

二、根据镜像启动创建容器

1.运行容器

1
2
3
4
5
docker run -d --name='report' -p 9527:8080 \
-v /data/scxx/report/config:/usr/local/apache-tomcat-8.5.82/pldconfig \
-v /data/scxx/report/tomcat/logs:/usr/local/apache-tomcat-8.5.82/logs \
-v /data/scxx/report/logs:/srv/logs/dev \
report

目录介绍:

/usr/local/apache-tomcat-8.5.82/pldconfig:外部配置文件目录

/usr/local/apache-tomcat-8.5.82/logs:tomcat日志目录

/srv/logs/dev:应用日志目录

三、常见问题

  • 如果是基于tomcat镜像制作,注意tomcat镜像中jdk版本,要用1.8版本,版本过高会报类找不到。