0%

记一次Java微服务容器化维护工作

维护经验分享

事件背景


容器架构由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 关键词

1

确定基础镜像使用 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 证书:

报错截图:

2

可以看到找不到/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不是文件夹

3

研发查看代码后确定是要使用 /media/providerstamp/temp/ 目录,索性登录老服务器上查看/media/providerstamp下所有目录,都创建好,并将需要的文件scp拷贝过来。

4

看到还有 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/

至此,此微服务容器化已完成。👏👏👏