1.使用maven将项目打成一个包含所有的jar包
2.pom.xml中包含即可通过mvn clean package 就可以打成可执行jar包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>com.org.Application</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<!-- 分离出代码包
<configuration>
<classifier>exec</classifier>
</configuration>
-->
</execution>
</executions>
</plugin>
</plugins>
</build>
3.将打成的jar包和一个DockerFile文件放入安装了docker的环境
DockerFile内容为:
#指定依赖的镜像
FROM java:8-alpine
#springboot tomcat挂载的目录
VOLUME /tmp
#容器使用端口
EXPOSE 9002
#添加jar包入容器
ADD start-apply-service-1.0-SNAPSHOT.jar app.jar
#改名
RUN sh -c 'touch /app.jar'
#容器启动java
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
------------------------------简化版DockerFile配置-----------------------------------------
FROM java:8-alpine
EXPOSE 9002
ADD start-apply-service-1.0-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
-------------------------------end---------------------------------------------
4.执行 docker build -t springboot:2.0 . #最后的"."指的是DockerFile文件的当前路径,springboot 为镜像名,2.0为tag,build 就是构建的意思。
5.执行上述命名 即可通过docker images 看到 我们生成的镜像
6. docker run -d -p 9002:9002 springboot:2.0 #启动自定义容器
7.docker logs --tail=200 2915c40fdcdf #查看容器启动日志
8.本地尝试访问
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构