在 Dockerfile 中更改 Java "SecureRandom"
Change Java "SecureRandom" in Dockerfile
我正在使用 tomcat 的 docker 图像和 jre8,
我必须在 java 环境中更改一个选项,可以在容器 运行 之后执行此操作,ssh 到它并更改
securerandom.source=file:/dev/random
到
securerandom.source=file:/dev/urandom
里面
root@112ecdd0b71f:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
但是,我想在容器启动之前自动执行此操作,因为当前设置需要很长时间才能 tomcat 启动。
此类更改有两种选择。
创建新映像并覆盖 JVM 系统属性。
您通常会根据您使用的原始文件创建一个新的 Dockerfile
并在其中进行更改。您可以使用 JAVA_OPTS
或 CATALINA_OPTS
,例如:
FROM tomcat:8-jre8
ENV CATALINA_OPTS -Dsecurerandom.source=file:/dev/urandom
在现有映像中运行时设置 JVM 系统属性。
这将使用 docker run
完成。通过-e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom"
即可。类似于:
docker run -e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom" tomcat:8-jre8
创建新图像并更改文件(不推荐)。
您还可以创建一个新图像,然后只进行您最初所做的更改(不过,我真的不喜欢在不需要时更改图像中的文件)。
FROM tomcat:8-jre8
RUN sed -i 's/file:\/dev\/random/file:\/dev\/urandom/' /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
我正在使用 tomcat 的 docker 图像和 jre8, 我必须在 java 环境中更改一个选项,可以在容器 运行 之后执行此操作,ssh 到它并更改
securerandom.source=file:/dev/random
到
securerandom.source=file:/dev/urandom
里面
root@112ecdd0b71f:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
但是,我想在容器启动之前自动执行此操作,因为当前设置需要很长时间才能 tomcat 启动。
此类更改有两种选择。
创建新映像并覆盖 JVM 系统属性。
您通常会根据您使用的原始文件创建一个新的
Dockerfile
并在其中进行更改。您可以使用JAVA_OPTS
或CATALINA_OPTS
,例如:FROM tomcat:8-jre8 ENV CATALINA_OPTS -Dsecurerandom.source=file:/dev/urandom
在现有映像中运行时设置 JVM 系统属性。
这将使用
docker run
完成。通过-e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom"
即可。类似于:docker run -e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom" tomcat:8-jre8
创建新图像并更改文件(不推荐)。
您还可以创建一个新图像,然后只进行您最初所做的更改(不过,我真的不喜欢在不需要时更改图像中的文件)。
FROM tomcat:8-jre8 RUN sed -i 's/file:\/dev\/random/file:\/dev\/urandom/' /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security