【问题标题】:Docker image creation for spring boot application which uses library in eclipse workspace为使用 Eclipse 工作区中的库的 Spring Boot 应用程序创建 Docker 映像
【发布时间】:2022-09-23 13:25:58
【问题描述】:

在为使用本地库的 Spring Boot 微服务(XMDService)创建 docker 映像时出现错误(我已在 pom.xml 文件中添加了这些库的依赖项)

构建失败 无法在项目 XMDService 上执行目标:无法解析项目 org.xtintech.xap:SimulatorXMDIService:jar:0.0.1-SNAPSHOT:T 的依赖项 以下工件无法解析:org.xtintech.xal:xalservicesapi:jar:0.0.1 -SNAPSHOT, org.xtintech.xal:xalplatformlibraries:jar:0.0.1-SNAPSHOT, org.xtintech.xal :simulatorxmdiserviceapi:jar:0.0.1-SNAPSHOT, org.xtintech.xpl:loggingframework:jar:0.0。 1-SNAPSHOT,org.xtintech.xpl:platformapi:jar:0.0.1-SNAPSHOT:找不到工件 org.xtintech.xal:xalservicesapi:jar:0.0.1-SNAPSHOT ->

       <java.version>11</java. Version>
       <spring-cloud. Version>2021.0.3</spring-cloud.version>
   </properties>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter</artifactId>
       </dependency>

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>
       <dependency>
           <groupId>org.xtintech.xal</groupId>
           <artifactId>xalservicesapi</artifactId>
           <version>0.0.1-SNAPSHOT</version>`enter code here`
       </dependency>
       <dependency>
           <groupId>org.xtintech.xal</groupId>
           <artifactId>xalplatformlibraries</artifactId>
           <version>0.0.1-SNAPSHOT</version>
       </dependency>
       <dependency>
           <groupId>org.xtintech.xal</groupId>
           <artifactId>simulatorxmdiserviceapi</artifactId>
           <version>0.0.1-SNAPSHOT</version>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>org.xtintech.xpl</groupId>
           <artifactId>loggingframework</artifactId>
           <version>0.0.1-SNAPSHOT</version>
       </dependency>
       <dependency>
           <groupId>org.xtintech.xpl</groupId>
           <artifactId>platformapi</artifactId>
           <version>0.0.1-SNAPSHOT</version>
       </dependency>



# syntax=docker/dockerfile:1

FROM eclipse-temurin:17-jre-jammy

COPY .mvn/ .mvn
COPY mvnw pom.xml ./
COPY mvnw settings.xml ./
RUN ./mvnw -s settings.xml dependency:resolve

COPY src ./src

CMD [\"./mvnw\", \"spring-boot:run\"]
  • 请显示您的pom.xml 和完整错误(因为它只是部分 sn-p 并且实际上缺少有趣的部分)。
  • 如果这些是本地库,它们应该在您本地的 Maven 存储库中。为什么docker会失败?您是否使用多阶段构建并在 docker 中使用 maven?如果是这样,您还需要将这些本地依赖项复制到 docker 容器及其本地 maven repo。

标签: spring-boot docker docker-image


【解决方案1】:

如果您使用本地库,您应该将复制语句添加到您的 dockerfile,您可以在其中将所需的库复制到我猜的正确位置。

【讨论】:

  • 感谢您的回复@Kerem。你知道我应该复制哪个文件夹吗?
【解决方案2】:

因为您的库不存在于任何 maven 存储库中,所以在安装 maven 时无法对其进行重新编译。

简单的解决方案是将您的库复制到一个文件夹中,然后将它们添加到 Maven 中,如下所示

<dependency>
    <artifactId>..</artifactId>
    <groupId>..</groupId>
    <scope>system</scope>
    <systemPath>${basedir}/lib/dependency.jar</systemPath>
</dependency>

构建 dockerfile 的步骤

  1. 使用 maven 创建 jar/war 文件
  2. 将 jar/war 文件复制到 dockerfile 中的 docker
  3. 由你决定

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2020-11-14
    • 2021-09-14
    • 2020-05-17
    • 2021-01-17
    • 2019-08-28
    相关资源
    最近更新 更多