我正在尝试通过Maven对我的SpringMVC应用程序进行docker化。我的意图是拥有一张图像,然后可以继续通过Web浏览器显示和显示该图像。
不幸的是,in following this guide似乎仍然缺乏关于实现该目标我必须进行的pom.xml编辑以及Dockerfile的关键理解。
======
这是Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
======
这是最新版本的source code's pom.xml。
======
这是我在上面引用的SpringIO指南的example pom.xml之后进行的最新修订(不包括依赖项)。
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.davidonus</groupId>
<artifactId>davidonusSpringDemo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- tag::packaging[] -->
<packaging>jar</packaging>
<name>davidonusSpringDemo1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!-- tag::docker[] -->
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<profiles>
<profile>
<id>DavidSpringTime</id>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- tag::plugin[] -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
</configuration>
</plugin>
<!-- end::plugin[] -->
<!-- tag::unpack[] -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<!-- end::unpack[] -->
</plugins>
</build>
这是我现在的结果,使用命令
mvn install build:docker
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.050 s
[INFO] Finished at: 2019-06-15T13:24:01-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.1:unpack (unpack) on project davidonusSpringDemo1: Unable to update Marker timestamp: /home/david/Desktop/DevOps2019/springBoot/teluskoSpringBoot/target/dependency-maven-plugin-markers/com.davidonus-davidonusSpringDemo1-jar-0.0.1-SNAPSHOT.marker: Unable to update last modified timestamp on marker file /home/david/Desktop/DevOps2019/springBoot/teluskoSpringBoot/target/dependency-maven-plugin-markers/com.davidonus-davidonusSpringDemo1-jar-0.0.1-SNAPSHOT.marker -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
======
总之,given my original pom.xml,您将实现哪些更改,以使我的SpringBoot + Maven项目可部署为Docker镜像和容器?
此外,您是否会对我的Dockerfile进行修改?感谢您的咨询。谢谢。
最佳答案
如果您已经使用pom.xml准备了springboot代码。然后按照以下步骤容器化您的应用程序。
git clone https://github.com/dnmorris7/teluskoSpringBoot
(我正在克隆您的springboot代码)git checkout module5
(已 check out module5分支)FROM maven:3.6-jdk-8-slim AS build
COPY . /usr/src/app/
WORKDIR /usr/src/app/
RUN mvn -f /usr/src/app/pom.xml clean package
FROM java:8-alpine
WORKDIR /
COPY --from=build /usr/src/app/target/*.jar /app.jar
CMD java -jar app.jar
注:我正在使用docker多阶段构建,其中在第一个步骤中,maven生成了jar,在第二阶段中,我们将该jar复制到了Java镜像中。
docker build -t appimage:v1 .
docker run -it -d -p 9090:9090 appimage:v1
$ curl localhost:9090/home
{"timestamp":"2019-06-16T05:34:26.655+0000","status":404,"error":"Not Found","message":"/pages/home.jsp","path":"/home"}
请输入正确的基本网址,我尝试了
/home
注:如果要提供自己的自定义
application.properties
,则将java -jar
中的Dockerfile
命令更改为CMD java -jar app.jar --spring.config.additional-location=application.properties
,并将docker run命令更改为docker run -it -d -v application.properties:/application.properties -p 9090:9090 appimage:v1
,其中application.properties
是您从外部提供的命令。
关于maven - 如何为docker配置Maven/Spring Boot项目pom.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612726/