【发布时间】:2021-01-10 20:25:20
【问题描述】:
在 docker 容器中运行 selenium 测试时,我们遇到了 java 堆错误。我们尝试通过 MAVEN_OPTS 和 JAVA_OPTS 来增加堆大小,但都没有解决我们的问题。
docker run -e JAVA_OPTS='-Xmx3g -Xms3g' MAVEN_OPTS='-Xmx2048m' oneapi_docker mvn clean install
还有我们的错误信息:OutOfMemory Java heap space
我只是添加了一个记录器信息来可视化运行测试时的内存消耗,似乎它没有受到影响。
- LoggerManager INFO : ========================== Memory Info ==========================
- LoggerManager INFO : Free memory: 258 MB LoggerManager INFO : Allocated memory: 404 MB
- LoggerManager INFO : Max memory: 498 MB LoggerManager INFO : Total free memory: 352 MB
- LoggerManager INFO : =================================================================
我们的 docker 文件是这样的;
#Step 0: Choose base
FROM maven:latest
#Step 1 : Install the pre-requisite
COPY . .
RUN mkdir -p /root/.m2 \
&& mkdir /root/.m2/repository
COPY settings.xml /root/.m2
ARG JAVA_OPTS
ARG MAVEN_OPTS
RUN echo $MAVEN_OPTS
RUN echo $JAVA_OPTS
【问题讨论】:
-
@GiorgiTsiklauri 不,不是。
-
我不确定这个问题是否有通用答案——这取决于基本映像的实现方式。一些基于 Java 的图像尊重广泛使用的环境变量,如 JAVA_OPTS,但许多不尊重。据我所知,在 Maven 映像中没有这方面的文档,而且我通常发现没有更好的方法来解决这个问题,而不是进入正在运行的容器并查看脚本。
标签: java docker maven dockerfile