从maven目标目录复制jar时Docker错误



我正在构建Docker映像以运行Spring Boot,但在构建它时,我得到了从目标目录复制jar文件的错误:

failed to solve: lstat /var/lib/docker/tmp/buildkit-mount188888512/var/www/app/target: no such file or directory

backend.Dockerfile:

FROM openjdk:17
WORKDIR /var/www/app
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src
RUN ./mvnw package -Dmaven.test.skip
EXPOSE 8080
COPY var/www/app/target/*.jar app.jar
CMD ["java", "-jar", "app.jar"]

以下是docker-compose.yaml中负责SpringBoot容器的部分:

app:
container_name: app
build:
dockerfile: ./docker/backend.Dockerfile
restart: on-failure
ports:
- "8080:8080"
depends_on:
- mysql
- mail-catcher

项目结构:

.
├── docker
│   └── backend.Dockerfile
├── src
│   └──...
├── target
│   └──...
├── mvnw
├── mvnw.cmd
├── pom.xml
└── docker-compose.yaml

我建议您使用Spring Boot Project构建docker映像的另一种方法。

您可以在maven构建期间使用maven插件来引用这个示例,您的映像将被构建。这个插件来自org.springframework.boot,它将帮助您构建所需模块的映像。如果它是一个maven项目,则需要在pom.xml文件中使用它。

然后你可以运行'mvn clean install'如果你有任何你想要运行的测试,或者如果你想要跳过你的测试,你可以使用'mvn clean install -DskipTests'

镜像将以docker的分层格式构建,采用多级镜像构建格式。

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>ms/product.service:latest</name>
</image>
</configuration>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>build-image</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

最新更新