维护经验分享
事件背景
容器架构由Swarm迁移到Kubernetes
Swarm集群中服务发现、服务注册使用Consul,迁移到K8s后注册发现是的K8s的kube-dns基础组件实现。
utilservice-vcg-com这个微服务部署在两台ecs上,java -jar 启动后 手动注册到consul中,这样实现Swarm集群中的应用可以通过Consul访问util服务。
思路
与相关研发沟通,确定utilservice程序一些基础信息:比如
需要哪些基础组件,在ecs上部署遇到什么问题,如何处理的
git仓库地址、服务启动命令、服务端口、是否连接数据库、服务调用关系。
确定使用jdk环境,需要使用到 wkhtmltopdf 这个命令,用于生成pdf;
生成的pdf过程会有 字体和语言的问题,需提前处理。
操作
确定基础镜像
访问https://hub.docker.com,搜索 wkhtmltopdf 关键词
确定基础镜像使用 buildo/java8-wkhtmltopdf 。
Dockerfile (第一版)
1
| FROM buildo/java8-wkhtmltopdf
|
下载JCE
需要使用到JCE,在oracle官网下载。
JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
Java Cryptography Extension (JCE) 无限强度权限策略文件 8 下载
Dockerfile (第二版)
1 2 3 4 5 6 7 8
| FROM buildo/java8-wkhtmltopdf MAINTAINER hongye.zhao@vcg.com RUN mkdir -p /application/ WORKDIR /application/ ADD . . RUN unzip jce_policy-8.zip && \ cp UnlimitedJCEPolicyJDK8/US_export_policy.jar /docker-java-home/jre/lib/security && \ cp UnlimitedJCEPolicyJDK8/local_policy.jar /docker-java-home/jre/lib/security && \
|
处理程序报错
1、找到不到 iSignature.pfx 证书:
报错截图:
可以看到找不到/media/providerstamp/signature/iSignature.pfx 证书文件,简单,从老服务器上找到对应文件,拷贝过来。
Dockerfile (第三版)
1 2 3 4 5 6 7 8 9 10
| FROM buildo/java8-wkhtmltopdf MAINTAINER hongye.zhao@vcg.com RUN mkdir -p /application/ WORKDIR /application/ ADD . . RUN unzip jce_policy-8.zip && \ cp UnlimitedJCEPolicyJDK8/US_export_policy.jar /docker-java-home/jre/lib/security && \ cp UnlimitedJCEPolicyJDK8/local_policy.jar /docker-java-home/jre/lib/security && \ mkdir -p /media/providerstamp/signature/ && \ cp iSignature.pfx /media/providerstamp/signature/ && \
|
2、tmpDic不是文件夹
研发查看代码后确定是要使用 /media/providerstamp/temp/ 目录,索性登录老服务器上查看/media/providerstamp下所有目录,都创建好,并将需要的文件scp拷贝过来。
看到还有 done 、unitrust目录,并且unitrust目录中的unitrust.key 程序也会用到。
Dockerfile (第四版)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM buildo/java8-wkhtmltopdf MAINTAINER hongye.zhao@vcg.com RUN mkdir -p /application/ WORKDIR /application/ ADD . . RUN unzip jce_policy-8.zip && \ cp UnlimitedJCEPolicyJDK8/US_export_policy.jar /docker-java-home/jre/lib/security && \ cp UnlimitedJCEPolicyJDK8/local_policy.jar /docker-java-home/jre/lib/security && \ mkdir -p /media/providerstamp/signature/ && \ mkdir -p /media/providerstamp/done/ && \ mkdir -p /media/providerstamp/unitrust/ && \ mkdir -p /media/providerstamp/temp/ && \ cp unitrust.key /media/providerstamp/unitrust && \ cp iSignature.pfx /media/providerstamp/signature/ && \
|
3、pdf内容乱码
乱码是由于字体问题,简单直接,直接从老服务器上拷贝 /usr/share/fonts 目录。
Dockerfile (第五版)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| FROM buildo/java8-wkhtmltopdf MAINTAINER hongye.zhao@vcg.com RUN mkdir -p /application/ WORKDIR /application/ ADD . . RUN unzip jce_policy-8.zip && \ cp UnlimitedJCEPolicyJDK8/US_export_policy.jar /docker-java-home/jre/lib/security && \ cp UnlimitedJCEPolicyJDK8/local_policy.jar /docker-java-home/jre/lib/security && \ mkdir -p /media/providerstamp/signature/ && \ mkdir -p /media/providerstamp/done/ && \ mkdir -p /media/providerstamp/unitrust/ && \ mkdir -p /media/providerstamp/temp/ && \ cp unitrust.key /media/providerstamp/unitrust && \ cp iSignature.pfx /media/providerstamp/signature/ && \ rm -f /usr/local/bin/wkhtmltopdf && \ rm -rf /usr/share/fonts && \ cp wkhtmltopdf /usr/local/bin/ && \ tar zxf fonts.tar.gz && \ mv fonts/ /usr/share/
|
至此,此微服务容器化已完成。👏👏👏