Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Docker Spring启动项目本地快照依赖项_Spring Boot_Docker_Docker Compose - Fatal编程技术网

Spring boot Docker Spring启动项目本地快照依赖项

Spring boot Docker Spring启动项目本地快照依赖项,spring-boot,docker,docker-compose,Spring Boot,Docker,Docker Compose,我正在学习docker如何使用我的spring boot应用程序。我无法加载从属项目的快照版本。 我有两个项目,项目A和项目B 这是我的docker文件 version: '2.1' services: projectA: build: context: ./projectA dockerfile: Dockerfile restart: always working_dir: /app co

我正在学习docker如何使用我的spring boot应用程序。我无法加载从属项目的快照版本。 我有两个项目,项目A和项目B

这是我的docker文件

version: '2.1'
services:
    projectA:
       build:
          context: ./projectA
          dockerfile: Dockerfile
       restart: always
       working_dir: /app
       command: mvn clean install
    projectB:
       build:
          context: ./projectB
          dockerfile: Dockerfile
       restart: always
       working_dir: /app
       command: mvn clean spring-boot:run
这将生成快照Jar项目A-1.1.0-Snapshot.Jar

我想在projectB(Spring引导应用程序)中使用这个jar

如何在POM.xml中指向这个本地jar

我的POM应该有

<dependency>
        <groupId>com.project.test</groupId>
        <artifactId>projectA</artifactId>
        <version>1.1.0-SNAPSHOT</version>
</dependency>

lastSessionTimestamp添加到本地快照Jar中

您的示例无法运行的原因是您对docker(compose)是什么以及它是如何工作的存在误解。它不是java库的包管理器,而是将整个应用程序打包在一起的工具

因此,具体配置如下:projectA使用Dockerfile构建docker容器构建projectA java库,最后将打包的JAR文件安装到docker容器本地文件系统maven文件夹中。此外,您正在尝试同时启动projectB。这意味着你有两个问题:

  • 运行中的容器彼此不了解,因为它们没有共享任何内容,但即使您要解决此问题,例如,通过在它们之间共享卷,您仍然存在问题
  • compose并不意味着一个命令,而是并行执行多个容器。因此,您可能会遇到这样的情况,即它可能会工作,而在下一次运行时将不再工作,因为在A完成之前执行B
  • 要解决这个问题,您有几个选项,我建议您执行以下操作: -使用多模块pom文件在您的机器上的容器外部构建A和B,该文件协调构建,并且只将最终的jar添加到您可以发布的docker映像中。如果可行,还可以在容器中执行构建

    但是为了简单地尝试两个构建都能工作,您可以创建一个卷,并将其装入两个容器中的maven文件夹中,该文件夹为
    /root/.m2
    ,前提是您没有更改默认用户

    但我强烈建议您也阅读docker如何处理多阶段构建以及如何处理卷:


    您能粘贴错误吗?无法编译projectB,因为更改是在projectA本地jar中进行的,而不是在repo中。您能先在projectA的文件夹上
    mvn clean安装吗?嗨,Mahendran,我能生成projectA jar,但是我如何将这个jar放入projectB依赖项中呢?转到您本地的maven repo,看看您是否有projectA的1.1.0-SNAPSHOT文件夹
    
    [ERROR] COMPILATION ERROR : 
    [INFO] ----------------------------   
    [ERROR].../com/project/test/api/assembler/UserMapper.java:
    [57,54]    cannot find symbol
      symbol:   method getLastSessionTimestamp()
      location: variable user of type com.project.test.domain.User