Intellij,Spring开发工具远程,Docker,错误意外的404响应上传类文件

我试图使用Spring Boot Dev工具(Spring Remote),并自动上传重新编译的文件到我的docker集装箱。

我不断收到Unexpected 404 response uploading class files

这是我的docker文件:

 FROM java:8 WORKDIR /first ADD ./build/libs/first.jar /first/first.jar EXPOSE 8080 RUN bash -c 'touch /first/first.jar' ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://mongodb/micros", "-Djava.security.egd", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-jar", "first.jar"] 

这是我的configuration和configuration 在这里输入图像说明

这是我收到的错误:

在这里输入图像说明

在使用docker-compose编写我的应用程序(web服务+ redis服务器+ mongo服务器)时,我得到了和你一样的问题。

正如Spring开发人员工具文档所指出的那样: “在运行完整打包的应用程序时,开发人员工具会被自动禁用,如果您的应用程序是使用java -jar启动的,或者是使用特殊的类加载器启动的,那么它就被认为是”生产应用程序“。

我想当我们在Docker容器中运行Spring Web Application时,开发者工具被禁用了,我们不能远程重启它。

目前,我正在主机上运行我的Web应用程序,并在容器中设置redis服务器,mongo服务器,以便在开发过程中更改代码时,可以快速重新启动Web应用程序。

从Spring Boot 1.5.0开始,devtools的默认设置被更改为从fat jar中排除devtools。

如果要包含它们,则必须将excludeDevtools标志设置为false。

但是,devtools文档没有解释如何做到这一点。 必要的文档实际上是在spring-boot-gradle-plugin文档中。

要做到这一点,你可以把这段代码放在build.gradle文件中:

 bootRepackage { excludeDevtools = false } 

不幸的是,起初这是错误的,并没有像Spring Boot 1.5.0那样起作用。 解决方法是做这个,而不是:

 springBoot { excludeDevtools = false } 

但是,我已经validation了bootRepackage方法适用于Spring Boot 1.5.8。

Interesting Posts