【发布时间】:2020-03-02 22:14:04
【问题描述】:
试图让多阶段 Spring Boot 应用程序 Dockerfile 工作。
这个想法是:
- 使用
mvn package命令构建和打包项目 - 运行构建的 .jar 文件
经过一番研究,我找到了this的文章。它提供了完整的 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命令正常工作...
【问题讨论】:
-
对可执行的 maven 文件尝试一些基本操作。例如。尝试尾/头,执行一个基本的 mvn 命令,例如mvn -version,列出/usr/bin/目录的内容。权限是否正确?文件是否存在?也许尝试另一个构建器图像(替代 maven:3.6.2-jdk-8-slim)
-
@Urasche 很好的建议。虽然我已经尝试过
mvn -version,但结果相同,我将检查/usr/bin/的权限和内容并使用信息更新帖子 -
好的,在显示/usr/bin的内容后,我得到了这个错误:
/bin/bash: /usr/local/bin/docker-entrypoint.sh: Permission denied,然后这个:/bin/sh: 0: Can't open /usr/local/bin/mvn-entrypoint.sh -
您如何尝试显示 /usr/bin 的内容?确切的命令是什么?也许尝试以根/系统管理员身份运行容器。在主机上获得 root 访问权限并执行命令:docker-compose up --build -d
标签: spring-boot maven docker dockerfile