首页 > 解决方案 > 如何在 Docker 容器和任何 IDE 中使用 Spring Boot 进行开发

问题描述

我使用 docker-compose 来启动不同的 Spring Boot 应用程序。

我的 docker 图像是用这种定义的Dockerfile

FROM openjdk:8-jdk-alpine

ADD app.jar app.jar

ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]

但是,我希望在mvn spring-boot:run不依赖特定 IDE 的情况下从调试和热重载功能中受益。

在不依赖特定 IDE 的情况下,在 Docker 容器中使用 Spring Boot 完成调试和热重载的最佳方法是什么?

笔记:

我想在docker容器中安装一个包含我的spring boot项目的卷,然后mvn spring-boot:run在容器中使用;但我无法阻止 maven 从 Internet 下载所有依赖项(我尝试指定一个包含我所有依赖项的本地存储库但没有成功)。我想知道这是否是一个不错的解决方案以及如何使其发挥作用。

标签: javaspring-bootdockermaven

解决方案


按照您的思路,您可以尝试将依赖项从卷复制到项目容器中,然后以如下方式使用离线模式:

FROM openjdk:8-jdk-alpine

WORKDIR /app

# copy the Project Object Model file
COPY ./pom.xml ./pom.xml

# copy your dependencies
COPY app.jar app.jar

# copy your other files
COPY ./src ./src

# Set fetch mode to offline to avoid downloading them from the internet
RUN mvn dependency:go-offline

显然,也可以通过在 ~/.m2/settings.xml 文件中设置离线属性来全局配置离线模式,您可以设置它并复制您的 m2 文件并在运行容器时引用它

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <offline>true</offline>
</settings>
mvn -Dmaven.repo.local=~/.m2/settings.xml ...

您可以在这里找到更多信息:


推荐阅读