gitlab-ci + k8s 之docker (三)

docker

在本系列(一)中(https://www.cnblogs.com/huandada/p/9965771.html)的runner_tomcat.sh脚本有涉及到镜像的推送,本文主要记录整个镜像的制作

镜像版本

由于应用需要图片的展示,故选用 tomcat:7.0.90-jre7-alpine 与 tomcat:8.0.53-jre8。
tomcat:8.0.53-jre8:流量管家在内的三个项目,没有图片应用
tomcat:7.0.90-jre7-alpine:其他项目

镜像优化

首先对镜像预先做优化,此次优化所得的镜像普遍适用于多个项目

时间同步

docker与宿主机的时间同步:docker与宿主机的时区不一样,导致相差8小时。宿主机是CST,docker是UTC:
将宿主机的/usr/share/zoneinfo/Asia/Shanghai文件放置于docker的/etc/localtime下。
此时,date查看时间正确,但是查看日志的时间还是与date时间相差8h。
java日志时间同步:
在tomcat/bin/catalina.sh,添加
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"

tomcat启动时间优化

linux或者部分unix系统提供随机数设备是/dev/random 和/dev/urandom ,
两个有区别,urandom安全性没有random高,但random需要时间间隔生成随机数。jdk默认调用random。
将jdk1.x.x_xx/jre/lib/security/java.security 以下参数改为securerandom.source=file:/dev/./urandom 减少启动时间。

工作目录

所定义的工作目录为一进容器就所在的目录,alpine需要定义,另一个版本官方已经定义好了

定义环境变量与cmd

cmd会在容器启动一个进程,此进程没了,容器消亡,alpine需要定义,另一个版本官方已经定义好了

优化命令

建build目录,将需要的与改好的文件放在/root/build/下

mkdir /root/build/
cp /usr/share/zoneinfo/Asia/Shanghai /root/build/

创建Dockerfile

vim /root/build/Dockerfile
FROM  tomcat:7.0.90-jre7-alpine
ADD Shanghai /etc/localtime
RUN sed -i '/cygwin=false/i\JAVA_OPTS=" -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"'  /opt/apache-tomcat-7.0.69/bin/catalina.sh \
&&  sed -i 's/securerandom.source=file:\/dev\/random/securerandom.source=file:\/dev\/.\/urandom/g'   /opt/jdk1.7.0_80/jre/lib/security/java.security
WORKDIR /opt/apache-tomcat-7.0.69
ENV PATH=/opt/apache-tomcat-7.0.69/bin:$PATH
CMD ["catalina.sh", "run"]

使用Dockerfile生成新镜像

cd /root/build/ && docker build -t tomcat:7.0.90-jre7-alpine-v1 .

应用镜像的生成

主要是放置数据库连接文件context.xml与war包

cd /test_project/appstore-backend/ && vim Dockerfile
FROM tomcat:7.0.90-jre7-alpine-v1
COPY appstore.war /opt/apache-tomcat-7.0.69/webapps/
COPY context.xml /opt/apache-tomcat-7.0.69/conf/

本系列(一)runner_tomcat.sh有根据此Dockerfile打包并推送到阿里云镜像服务器命令。

猜你喜欢

转载自www.cnblogs.com/huandada/p/9970707.html