Spring boot 使用Maven的多级弹簧引导Dockerization
尝试获取多阶段Spring引导应用程序Dockerfile 其想法是: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
mvn package
命令构建并打包项目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