我正在Openshift环境中部署一个spring-boot web应用程序。由于我们在同一个启动项目中使用JSP和CSS等web组件,因此我们将应用程序部署为Openshift环境中的WAR文件。我还添加了tomcat嵌入jasper来解析这些web组件并执行WAR文件。
但问题是,当我在Openshift环境中部署它时,应用程序会消耗超过1GB的资源。有什么方法可以减少应用程序的内存消耗吗?
Dockerfile
FROM maven:3.5-jdk-8-alpine AS MAVEN_BUILD
COPY pom.xml /build/
COPY src /build/src/
WORKDIR /build/
RUN mvn -DskipTests=true package
FROM tomcat:8.0.51-jre8-alpine
WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/*
COPY --from=MAVEN_BUILD /build/target/services-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh","run"]
我尝试更改为不同的tomcat映像,但当我部署时,只有tomcat启动,并且我的应用程序没有部署在tomcat中。我也在为此寻求建议。当我使用不同的tomcat图像时,会记录以下内容。
图片:tomcat:10.0.0-jdk8-adoptopenjdk-openj9
15-Sep-2020 07:03:31.484 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/ROOT.war]
15-Sep-2020 07:03:38.884 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
15-Sep-2020 07:03:39.048 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/ROOT.war] has finished in [7,563] ms
15-Sep-2020 07:03:39.054 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
15-Sep-2020 07:03:39.067 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [7671] milliseconds
谢谢。
如所示
FROM maven:3.5-jdk-8-alpine AS MAVEN_BUILD
COPY pom.xml /build/
COPY src /build/src/
您正在处理整个src文件夹。我想这会占用很多内存。
我建议从DockerFile中排除mvn包,单独运行mvn包并单独使用以下部分:
FROM tomcat:8.0.51-jre8-alpine
WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/*
COPY --from=MAVEN_BUILD /build/target/services-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh","run"]