1、执行通过maven的spring-boot-maven-plugin插件打包出的jar太大,需要对其进行瘦身分离出依赖的jar
maven配置如下:
1 <build> 2 <finalName>${project.artifactId}</finalName> 3 <plugins> 4 <plugin> 5 <groupId>org.springframework.boot</groupId> 6 <artifactId>spring-boot-maven-plugin</artifactId> 7 <executions> 8 <execution> 9 <goals> 10 <goal>repackage</goal> 11 </goals> 12 </execution> 13 </executions> 14 <configuration> 15 <mainClass>com.permissions.third.PermissionsThirdApplication</mainClass> 16 <layout>ZIP</layout>
<!--将自己写的子模块的依赖打入jar中 --> 17 <includes> 18 <include> 19 <groupId>com.permissions</groupId> 20 <artifactId>permissions-common-datasource</artifactId> 21 </include> 22 <include> 23 <groupId>com.permissions</groupId> 24 <artifactId>permissions-common-log</artifactId> 25 </include> 26 <include> 27 <groupId>com.permissions</groupId> 28 <artifactId>permissions-common-swagger</artifactId> 29 </include> 30 </includes> 31 </configuration> 32 </plugin> 33 <!--拷贝依赖到jar外面的lib目录--> 34 <plugin> 35 <groupId>org.apache.maven.plugins</groupId> 36 <artifactId>maven-dependency-plugin</artifactId> 37 <executions> 38 <execution> 39 <id>copy-lib</id> 40 <phase>package</phase> 41 <goals> 42 <goal>copy-dependencies</goal> 43 </goals> 44 <configuration> 45 <outputDirectory>target/lib</outputDirectory> 46 <!--不重写lib 如果存在lib不处理--> 47 <overWriteIfNewer>false</overWriteIfNewer> 48 <includeScope>compile</includeScope> 49 </configuration> 50 </execution> 51 </executions> 52 </plugin> 53 </plugins> 54 </build>
2、每个模块生成的lib文件夹下的依赖jar不能放到一个文件夹下混在一起,必须要每个模块的docker容器分别挂载一个目录存放每个模块生成的lib
3、当需要docker在run之后执行制定shell脚本时,默认docker是没有执行shell的bash环境的,需要在Dockerfile中添加才行(Dockfile已做数据敏感处理仅做参考)
1 FROM abc/jdk11:latest 2 3 LABEL sub_sys_code=scdq le=某某某 clustersoft=deployment caas_user=abc 4 VOLUME ["/home/lib"] 5 # 饱和内存使用总量 = 最大堆内存大小(2048M) + 最大元空间大小(512M) + 最大直接内存大小(512M) = 3072M,生产部署值应为压测指标的1.5-2倍 6 ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \ 7 PINGAN_SLEEP=0 \ 8 TZ=Asia/Shanghai \ 9 JAVA_ARGS=" -Dloader.path=/home/lib -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -Dclient.encoding.override=UTF-8 -Duser.timezone=${TZ}" \ 10 JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/scdq -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:MaxDirectMemorySize=512m -Xms2048m -Xmx2048m -Xmn256m -Xss256k -XX:SurvivorRatio=8" 11 WORKDIR /workspace/ 12 ADD . . 13 14 EXPOSE 9200 15 16 RUN chmod 755 *.sh && chown -R 1000 *.sh 17 18 ENTRYPOINT ["/bin/sh","./startup.sh"]
在上面的ENTRYPOINT 中加入"/bin/sh"
4、编写Dockerfile时注意精简版的jdk镜像会导致一些问题,比如验证码生成会因为jdk不全导致出现异常,所以实在不行建议FROM参数设置JDK时使用完整版jdk不要使用精简版
5、nginx配置转发时要注意location后的路径和proxy_pass后的路径,这两个路径最后都要注意保持斜杠/结尾,否则配置会不生效