Eova 怎么放在 Docker中,使用阿里云流水线构建Eova!!
Eova 快速开发框架不做过多解释,使用起来超级爽提高了我们的开发效率。
有要了解的可以去官网看下http://www.eova.cn/
最近我们想在docker中运行并且使用阿里云的云效工具去构建部署,接下来进入正题:
首先要先把eova 运行跑在docker 中,然后使用阿里云云效工具进行构建和部署
1.dockerfile 编写
我用的eova 3.3.0版本使用Undertow 启动服务,目录中有几个脚本分别支持window和linux环境的eova.bat 和 eova.sh 可以直接启动
在执行mvn clean package 会在target 打包生成 eova-pro-release.zip 文件所以我们只需要将这个文件copy到容器中解压,执行eova.sh start
命令就可以了下面是我用的Dockerfile文件内容,Dockerfile放在项目根目录下
1 FROM openjdk:8-jdk-alpine 2 # 设置时区 3 ENV TZ=Asia/Shanghai 4 # 时区写入系统文件 5 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 6 #COPY ./SourceHanSansCN-Normal.ttf /usr/share/fonts/SourceHanSansCN-Normal.ttf 7 COPY ./target/eova-pro-release.zip /eova-pro-release.zip 8 RUN unzip eova-pro-release.zip 9 RUN chmod +x /eova.sh 10 ENV ACTIVE_PARAMS="" 11 ENTRYPOINT ["/eova.sh","start"]
这个要注意的是我用的镜像是openjdk:8-jdk-alpine 所以eova.sh 文件内容要改下将
#!/bin/bash 改为 #!/bin/sh
2.开始在云效中新建流水线,这个可以参考阿里云的文档去创建。
3.补充下,在真实部署的时候,发现自己实现的类无法覆盖原有的代码。这个是因为tomcat 是默认从classes优先加载,但是Undertow 和这个机制不一样需要改下生成文件
修改package.xml
- 在 fileSets 中增加
<fileSet> <directory>${basedir}/target/classes</directory> <outputDirectory>classes</outputDirectory> </fileSet>
- 在dependencySets节点下dependencySet中增加排除自身jar的配置
<excludes> <exclude>cn.startom:mywadmin*:jar</exclude> </excludes>
- 配置eova.bat 和 eova.sh 文件增加classes路径在上
CP=${APP_BASE_PATH}/classes:${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/* windows eova.bat类似配置即可