如何配置Maven/SpringBoot项目';docker的pom.xml?
我正试图通过Maven将我的SpringMVC应用程序对接。我的目的是有一个图像,然后我可以继续曝光,并通过我的网络浏览器显示 不幸的是,我似乎仍然缺乏对pom.xml的关键性理解,而我必须对pom.xml进行编辑才能实现这一点,还有Dockerfile ====== 以下是Dockerfile: ====== 这是最新版本的 ====== 下面是我在上面引用的SpringIO指南(不包括依赖项部分)的后续版本中的最新修订尝试。 ====== 总之,为了使我的SpringBoot+Maven项目可以部署为docker映像和容器,您将实施哪些更改如何配置Maven/SpringBoot项目';docker的pom.xml?,maven,spring-boot,docker,Maven,Spring Boot,Docker,我正试图通过Maven将我的SpringMVC应用程序对接。我的目的是有一个图像,然后我可以继续曝光,并通过我的网络浏览器显示 不幸的是,我似乎仍然缺乏对pom.xml的关键性理解,而我必须对pom.xml进行编辑才能实现这一点,还有Dockerfile ====== 以下是Dockerfile: ====== 这是最新版本的 ====== 下面是我在上面引用的SpringIO指南(不包括依赖项部分)的后续版本中的最新修订尝试。 ====== 总之,为了使我的SpringBoot+Maven项目
此外,您是否会对我的Dockerfile进行修改?感谢您的咨询。谢谢你。我想没少多少。或者更好的是,事情可能太多了 首先,您需要告诉docker maven插件运行。定义了哪些插件在哪个阶段运行。因此,所有其他插件都需要某个执行配置(在父pom或您的pom中)。其次,不需要解压缩创建的jar文件。SpringBoot将自动创建一个可执行的jar文件。你只需要告诉docker maven插件(它是在哪里创建的) 这将是Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/myapp.jar
ENTRYPOINT ["java","-jar","/usr/share/myapp.jar"]
这是你的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-spring-boot-docker</artifactId>
<version>0.1.0</version>
<packaging>jar</packaging>
<name>Spring Boot Docker</name>
<description>Getting started with Spring Boot and Docker</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath />
</parent>
<properties>
<docker.image.prefix>springio</docker.image.prefix>
<java.version>1.8</java.version>
</properties>
<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>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
<!-- end::plugin[] -->
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
4.0.0
org.springframework
弹簧靴装卸工
0.1.0
罐子
弹簧靴装卸工
开始使用Spring Boot和Docker
org.springframework.boot
spring启动程序父级
2.1.4.1发布
斯普林尼奥
1.8
org.springframework.boot
springbootmaven插件
com.spotify
dockerfile maven插件
1.4.9
违约
建造
${docker.image.prefix}/${project.artifactId}
${project.build.finalName}.jar
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
可以删除依赖插件的解包目标。通过这种方式,jar被添加到映像中并直接运行。希望它能起作用 我想没少多少。或者更好的是,事情可能太多了 首先,您需要告诉docker maven插件运行。定义了哪些插件在哪个阶段运行。因此,所有其他插件都需要某个执行配置(在父pom或您的pom中)。其次,不需要解压缩创建的jar文件。SpringBoot将自动创建一个可执行的jar文件。你只需要告诉docker maven插件(它是在哪里创建的) 这将是Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/myapp.jar
ENTRYPOINT ["java","-jar","/usr/share/myapp.jar"]
这是你的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-spring-boot-docker</artifactId>
<version>0.1.0</version>
<packaging>jar</packaging>
<name>Spring Boot Docker</name>
<description>Getting started with Spring Boot and Docker</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath />
</parent>
<properties>
<docker.image.prefix>springio</docker.image.prefix>
<java.version>1.8</java.version>
</properties>
<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>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
<!-- end::plugin[] -->
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
4.0.0
org.springframework
弹簧靴装卸工
0.1.0
罐子
弹簧靴装卸工
开始使用Spring Boot和Docker
org.springframework.boot
spring启动程序父级
2.1.4.1发布
斯普林尼奥
1.8
org.springframework.boot
springbootmaven插件
com.spotify
dockerfile maven插件
1.4.9
违约
建造
${docker.image.prefix}/${project.artifactId}
${project.build.finalName}.jar
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
可以删除依赖插件的解包目标。通过这种方式,jar被添加到映像中并直接运行。希望它能起作用 如果您的springboot代码已准备好pom.xml。然后按照以下步骤将应用程序容器化
(我正在克隆您的springboot代码)git克隆https://github.com/dnmorris7/teluskoSpringBoot
(签出模块5分支)git签出模块5
- 在git代码库中创建Dockerfile,包含以下内容:
- 现在构建您的docker镜像
docker构建-t appimage:v1。
- 运行docker容器
docker Run-it-d-p 9090:9090 appimage:v1
- 点击api以检查其工作是否正常
/home
注意:如果您想提供自己的自定义应用程序.properties
,请将Dockerfile
中的java-jar
命令更改为CMD java-jar app.jar--spring.config.additional location=application.properties
并将docker run命令更改为docker run-it-d-vapplication.properties:/application.properties-p9090:9090 appimage:v1
其中application.properties
是
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-spring-boot-docker</artifactId>
<version>0.1.0</version>
<packaging>jar</packaging>
<name>Spring Boot Docker</name>
<description>Getting started with Spring Boot and Docker</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath />
</parent>
<properties>
<docker.image.prefix>springio</docker.image.prefix>
<java.version>1.8</java.version>
</properties>
<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>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
<!-- end::plugin[] -->
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
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
$ curl localhost:9090/home
{"timestamp":"2019-06-16T05:34:26.655+0000","status":404,"error":"Not Found","message":"/pages/home.jsp","path":"/home"}