Springboot应用程序与Java 10一起在Docker的创业公司陷入困境



解决方案

椅子和键盘之间存在错误

问题在于spring_profiles_active环境变量指向不存在的配置文件。将其更改为正确的名称已解决了问题。我本来预计春天会输出一个错误,但是哦。

原始问题:

我有一个" Hello World" Java应用程序Build在Java10中使用Spring Boot运行。它直接在我的机器上运行良好,但是当试图用Docker启动它时,它会陷入以下输出:

(The Srping ascii art)
 :: Spring Boot ::        (v2.0.1.RELEASE)
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (jar:file:/app.jar!/BOOT-INF/lib/groovy-2.4.15.jar!/) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

运行过程:

java -Xmx800m -Djava.security.egd=file:/dev/./urandom -jar /app.jar

它直接在我的笔记本电脑(MAC OS(和我的同事(Windows 7(上运行,但在本地和Kubernetes(AWS(

中都失败了

我尝试将弹簧日志级别配置为调试,但没有效果。我还尝试编辑$JAVA_HOME/conf/security/java.security以直接更改Java Securerandom.source属性,该属性也不起作用。

编辑:Dockerfile是通过使用此操作的A:

FROM openjdk:10-jdk
RUN apt-get update && 
    apt-get install -y openssl curl
ADD java.security /docker-java-home/conf/security/java.security
ONBUILD ARG BUILD_VERSION_NO="no-version"
ENV SPRING_PROFILES_ACTIVE=prod
#ENV JAVA_OPTS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"
ONBUILD COPY target/*.jar app.jar
ONBUILD RUN sh -c 'touch /app.jar'
ONBUILD RUN echo "$BUILD_VERSION_NO" > /version
EXPOSE 8080
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar" ]

我笔记本电脑中的Java版本是

java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

用等效的OpenJDK打包应用程序无法解决问题

openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10)
OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode) 

以防其他人碰到这个问题:

spring_profiles_active环境变量包含" prod",而应用程序中的弹簧配置文件为" pro"。更改Dockerfile中的值解决了问题。

最新更新