首页 > 解决方案 > 使用 Maven 的多阶段 Spring Boot Dockerization

问题描述

试图让多阶段 Spring Boot 应用程序 Dockerfile 工作。

这个想法是:

  1. mvn package使用命令构建和打包项目
  2. 运行构建的 .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在实际项目文件夹中运行命令正常工作...

标签: spring-bootmavendockerdockerfile

解决方案


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

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


推荐阅读