spring - 容器化 Spring Boot 应用程序时 "-Djava.security.egd=file:/dev/./urandom"到底做了什么

标签 spring spring-boot docker spring-security dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

以上Dockerfile示例来自官方Spring Boot guide对于 docker 。我想知道安全属性的用途,因为在本地开发环境中运行应用程序时我通常不会设置该属性,但它似乎出现在各种容器化指南中。干杯!

最佳答案

该安全属性的目的是加快 tomcat 的启动速度。默认情况下,用于在 Unix 系统上的 JVM 中生成随机数的库依赖于 /dev/random。在 Docker 容器上,没有足够的熵来支持 /dev/random。请参阅Not enough entropy to support /dev/random in docker containers running in boot2docker 。 随机数生成器用于生成 session ID。将其更改为 /dev/urandom 将使启动过程更快。

类似问题Slow startup on Tomcat 7.0.57 because of SecureRandom

关于spring - 容器化 Spring Boot 应用程序时 "-Djava.security.egd=file:/dev/./urandom"到底做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853372/

相关文章:

java - 更新到SDN 3.4.1后出现异常 "The Neo Server running is of unknown type."

java - 如何更改 ResponseStatusException 的 ErrorAttributes?

spring-boot - Spring Boot and Logging with External Tomcat 只输出启动日志

java - 连接到github/bitbucket存储库时,自动化的Spring Boot Docker Image无法在Docker Hub上构建

ruby-on-rails - 跨 docker 容器共享预编译 Assets

java - 将 Java Bean 从 Applet 发送到 Servlet

java - 如果需要更多时间,则终止 threadexecutor 中的任务

java - 任何带有 TaskExecutor 示例的好的 Spring 线程?

spring-boot - 如何从外部对运行在kubernetes pod中的应用程序进行http调用?

python-3.x - Docker 中的 SSL UNSUPPORTED_PROTOCOL Python 3