spring-boot - 使用 Maven 的多阶段 Spring Boot Dockerization
问题描述
试图让多阶段 Spring Boot 应用程序 Dockerfile 工作。
这个想法是:
mvn package
使用命令构建和打包项目- 运行构建的 .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 工作正常。
好吧,这是未来的一个教训。
推荐阅读
- css - 当“X”图标出现时css字段位置发生变化[它应该与标题相同],有人知道解决方案吗?
- php - 将对象数据提取到数组中会出现错误:未捕获的错误:无法将 stdClass 类型的对象用作数组
- codeigniter - 在 uri 中提交 char ( ) 时出现错误
- android - 在 Libgdx android 项目上使用 Spatialite 库给出“无法为目标加载共享库 'gdx':Linux,32 位”错误
- android - 为什么我无法从 Firebase 数据库中读取数据?
- sql - Microsoft Access 查询返回问题
- php - 替换字符串中第二次出现的单词并返回整个字符串
- cmake - CMake execute_process 的多个输入文件
- identityserver4 - 如何将刷新令牌到期日期添加到令牌端点响应?
- python - 当 dtypes 不同时如何在 TensorFlow 中重用现有变量?