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。