场景
使用帆软制作报表后,需要将报表系统生成可执行的docker镜像,技术总结如下:
1 测试项目
先测试项目,再打war包
1.1 找到项目,复制项目
打开帆软设计器,打开一个报表,展示的帆软项目位置如下:
然后,将这目录下的这个webroot文件夹复制到tomcat的webapps文件夹中。
1.2 替换tools.jar
如果你的项目能够正常启动,此步骤可省略。
找到java_home下lib/tools.jar,然后复制;
找到tomcat下webapps/webroot/WEB-INF/lib/tools.jar,然后替换。
1.3 启动tomcat
sudo sh ./startup.sh
参考:https://blog.csdn.net/leinminna/article/details/104621575
2 打war包
如果系统能够运行,开始打war包;
在tomcat/webapps/webroot 目录执行命令:
jar cvf webroot.war *
然后,会在该目录生成webroot.war文件
3 制作镜像
3.1 启动tomcat容器
docker run --name tomcat -p 8080:8080 -d tomcat:8.5.43 // 本地端口号:容器内部端口号,固定8080
docker logs tomcat
3.2 放置war
进入容器,找到tomcat容器的webapps目录,先删除同名文件
docker exec -it tomcat bash
rm webroot.war
rm -rf webroot
pwd // 获取文件路径
exit // 退出容器
然后在容器外,复制本地的war文件到tomcat容器下的这个目录
docker cp /Applications/FineReport/webapps/webroot/webroot.war tomcat:/usr/local/tomcat/webapps/
一般情况,war包会自动解压,如果需要手动解压,可以使用命令:
mikdir webroot // 先新建同名文件
jar -xvf webroot.war webroot // jar方式解压
unzip -oq webroot.war -d webroot // 或,zip方式解压
3.3 替换tools.jar
重启tomcat容器,如果你的项目能够正常启动,此步骤可省略。
在这个容器中,执行命令:
删除tomcat容器项目下的tools.jar
cd /usr/local/tomcat/webapps/webroot/WEB-INF/lib/
rm tools.jar
找到tomcat 容器中jdk中的tools.jar,然后替换
cd /usr/local/openjdk-8/lib/
cp tools.jar /usr/local/tomcat/webapps/webroot/WEB-INF/lib/
3.4 重启容器
docker restart tomcat
docker logs tomcat
3.5 制作新镜像
使用现有的运行系统生成镜像
docker commit tomcat webroot:v1.0
然后测试这个新镜像:
docker stop tomcat
docker run -d --name webroot -p 8080:8080 webroot:v1.0 // 本地端口号:容器内部端口号,固定8080
然后页面测试
3.6 下载镜像
指定下载路径和tar文件名
docker image save -o /Users/leimin/Documents/cncommdataFile/webroot.tar webroot:v1.0
结果
注释:上传docker仓库。
$ sudo docker login --username=2665632321@qq.com registry.cn-chengdu.aliyuncs.com
$ sudo docker tag [镜像Id] registry.cn-chengdu.aliyuncs.com/himurasong/[镜像名]:[镜像版本号]
$ sudo docker push registry.cn-chengdu.aliyuncs.com/himurasong/[镜像名]:[镜像版本号]
4 加载tar
然后,将tar包发给客户,客户将tar包加载到docker,命令:
docker load --input webroot.tar