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

Posted

技术标签:

【中文标题】Intellij,Spring 开发工具远程,Docker,错误意外的 404 响应上传类文件【英文标题】:Intellij, Spring dev tools remote, Docker, error Unexpected 404 response uploading class files 【发布时间】:2017-08-03 05:31:42 【问题描述】:

我正在尝试使用 Spring Boot 开发工具(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"]

这是我的配置和配置

这是我收到的错误:

【问题讨论】:

如果你投反对票,至少告诉我原因:) 【参考方案1】:

就我而言,我必须将应用程序上下文放在 IDE RemoteSpringApplication 配置的参数上。

例如,我的应用程序根上下文是 /virtue,所以我必须像这样配置它:

【讨论】:

【参考方案2】:

从 Spring Boot 1.5.0 开始,devtools 默认值已更改为从 fat jar 中排除 devtools。

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

但是,devtools 文档没有说明如何执行此操作。必要的文档其实在 spring-boot-gradle-plugin 文档中。

为此,您可以将这段 sn-p 代码放入您的 build.gradle 文件中:

bootRepackage 
    excludeDevtools = false

不幸的是,这最初是错误的,并且从 Spring Boot 1.5.0 开始没有效果。解决方法是这样做:

springBoot 
    excludeDevtools = false

但是,我已验证 bootRepackage 方法适用于 Spring Boot 1.5.8。

【讨论】:

【参考方案3】:

在使用 docker-compose 编写我的应用程序(Web 服务 + redis 服务器 + mongo 服务器)时,我遇到了与您相同的问题。

正如 Spring 开发者工具文档指出的 "Developer tools are automatically disabled when running a fully packaged application. If your application is launched using java -jar or if it’s started using a special classloader, then it is considered a “production application”."

我认为当我们在 Docker 容器中运行 Spring Web Application 时,开发人员工具被禁用,然后我们无法远程重启它。

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

【讨论】:

它还说您可以设置 excludeDevtools=false 以确保 devtools 包含在重新打包的存档中:docs.spring.io/spring-boot/docs/current/reference/html/… 无论如何,我无法让它工作 我也遇到了同样的问题,你知道怎么解决吗?

以上是关于Intellij,Spring 开发工具远程,Docker,错误意外的 404 响应上传类文件的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA spring boot 远程Ddbug调试

Idea Intellij 远程开发调试

为啥 IntelliJ 在远程调试时跳过断点

如何在Windows中使用Intellij idea搭建远程Hadoop开发环境

体验IntelliJ IDEA的远程开发(Remote Development)

体验IntelliJ IDEA的远程开发(Remote Development)