Spring boot 使用Maven的多级弹簧引导Dockerization

Spring boot 使用Maven的多级弹簧引导Dockerization,spring-boot,maven,docker,dockerfile,Spring Boot,Maven,Docker,Dockerfile,尝试获取多阶段Spring引导应用程序Dockerfile 其想法是: 使用mvn package命令构建并打包项目 运行build.jar文件 经过研究,我找到了这篇文章。它提供了完整的Dockerfile,但它不适合我 我修改了初始Dockerfile,现在它看起来如下: FROM maven:3.6.2-jdk-8-slim AS MAVEN_BUILD COPY pom.xml /build/ COPY src /build/src/ WORKDIR /build/ RUN mvn

尝试获取多阶段Spring引导应用程序Dockerfile

其想法是:

  • 使用
    mvn package
    命令构建并打包项目
  • 运行build.jar文件
  • 经过研究,我找到了这篇文章。它提供了完整的Dockerfile,但它不适合我

    我修改了初始Dockerfile,现在它看起来如下:

    FROM maven:3.6.2-jdk-8-slim AS MAVEN_BUILD
    
    COPY pom.xml /build/
    COPY src /build/src/
    
    WORKDIR /build/
    
    RUN mvn -Dmaven.test.skip=true package -Ptest # This line does not work properly
    
    FROM openjdk:8-jre
    
    WORKDIR /app
    
    COPY --from=MAVEN_BUILD /build/target/platform-0.0.1.jar /app/
    
    ENTRYPOINT ["java", "-jar", "platform-0.0.1.jar"]
    
    我创建了一个
    docker compose.yml
    ,试图构建这个Dockerfile:

    [...]
      api:
        build:
          context: .
          dockerfile: Dockerfile
        depends_on:
          - mysql-db
        ports: 
          - "8080:8085"
    [...]
    
    运行
    docker compose up--build-d
    命令后,我总是会遇到以下错误:

    我错过什么了吗


    在实际项目文件夹中运行
    mvn-Dmaven.test.skip=true package-Ptest
    命令正常工作…

    问题在于docker客户端的安装。它在安装后不知何故没有设置必要的权限。在其他机器上,此Dockerfile工作正常


    好吧,这是将来的一个教训。

    在可执行maven文件上尝试一些基本操作。例如,尝试跟踪/引导它,执行基本的mvn命令,例如mvn-version,列出/usr/bin/目录的内容。权限是否正确?文件存在吗?也许可以尝试另一个构建器映像(替代maven:3.6.2-jdk-8-slim)@Urasche伟大的建议。虽然我已经尝试了
    mvn-version
    ,但结果相同,在显示/usr/bin的内容后,我将检查
    /usr/bin/
    的权限和内容,并使用infoOk更新帖子,我遇到了这个错误:
    /bin/bash:/usr/local/bin/docker-entrypoint.sh:权限被拒绝
    ,之后这个错误:
    /bin/sh:0:无法打开/usr/local/bin/mvn entrypoint.sh
    您是如何尝试显示/usr/bin的内容的?确切的命令是什么?可能尝试以root/系统管理员身份运行容器。在主机上获得root访问权限并执行命令:docker compose up--build-d