如何通过Maven命令行执行Spring Boot项目以实现Docker化?
解决Spring Boot项目命令行执行与Docker化问题
一、先实现命令行运行项目
1. 基础环境检查
确保本地已安装Maven和与项目匹配的Java版本(查看pom.xml里的java.version字段,你的项目指定的是17)。
2. 直接命令行启动项目
进入项目根目录(包含pom.xml的文件夹),执行:
mvn spring-boot:run
如果之前指定goal无效,检查pom.xml是否包含Spring Boot Maven插件:
若没有,添加以下配置到<build>标签内:
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins>
该插件是Spring Boot项目命令行运行、打包的核心依赖,继承spring-boot-starter-parent的项目会默认包含,若你的pom未继承父项目则需手动添加。
3. 打包成可执行Jar后运行
如果需要生成可部署的Jar包,执行:
mvn clean package -DskipTests
执行完成后,target目录会生成形如flipthebook-back-<版本号>.jar的可执行Jar,运行命令:
java -jar target/flipthebook-back-<版本号>.jar
(替换<版本号>为实际Jar文件名中的版本信息)
二、Docker化项目(基于Maven构建)
使用多阶段构建Dockerfile,既保证构建环境完整,又能缩小最终镜像体积:
# 构建阶段:用Maven镜像编译打包项目 FROM maven:3.8.6-openjdk-17 AS builder WORKDIR /app # 先复制pom.xml,利用Docker缓存优化构建速度 COPY pom.xml . RUN mvn dependency:go-offline # 复制源码并打包 COPY src ./src RUN mvn clean package -DskipTests # 运行阶段:用轻量JDK镜像运行Jar FROM openjdk:17-jdk-slim WORKDIR /app # 从构建阶段复制生成的Jar包 COPY --from=builder /app/target/*.jar app.jar # 暴露项目端口(根据你的实际端口修改,默认8080) EXPOSE 8080 # 启动命令 ENTRYPOINT ["java", "-jar", "app.jar"]
构建与运行Docker容器
- 进入项目根目录,执行镜像构建命令:
docker build -t flipthebook-back .
- 启动容器:
docker run -p 8080:8080 flipthebook-back
(-p 8080:8080是将主机8080端口映射到容器内的8080端口,根据项目实际端口调整)
内容的提问来源于stack exchange,提问作者martinfo
相关产品推荐
相关产品推荐

