使用Dockerfile部署springboot项目 (入门级教程 简单易懂)

简介: 以前我们部署项目打包->传到服务器->java -jar运行而且服务器还得先配置好java运行环境

以前我们部署项目


打包->传到服务器->java -jar运行


而且服务器还得先配置好java运行环境


现在,使用docker部署项目,只需要在项目中编写一个Dockerfile文件


在项目中创建一个Dockerfile文件,我这里就放到项目根路径下


那么Dockerfile改如何编写呢?下方命令中黑体部分是固定写法


首先第一步jar包运行肯定需要一个运行环境

FROM openjdk:8-jdk-slim


这个from后面怎么写,比如我现在用的java8,到docker hub网站中搜索jdk,点击第一个java进去,在tags标签页下面搜索8-jdk,找到一个linux的jdk,复制下面选中的这一块就可以



第二步写上作者

LABEL maintainer=vhukze


第三步复制jar包

大家都知道在docker中运行容器,本身是运行了小的linux系统。要运行这个jar包,linux中就得有这个jar包,使用copy命令把jar包复制到一个自定义路径下


我的Dockerfile文件放到了项目根路径下,跟target目录平级


COPY target/*.jar /main.jar


target目录下也就一个jar包,直接写*.jar,把jar包复制到了小linux中根路径下,名称为main.jar


第四步启动命令

上面复制完之后名称为main.jar,所以这里启动命令也是启动mian.jar


ENTRYPOINT ["java","-jar","/main.jar"]


构建镜像并启动

至此一个最简单的Dockerfile文件就编写完成了


全部内容如下


FROM openjdk:8-jdk-slim

LABEL maintainer=vhukze

COPY target/*.jar /main.jar

ENTRYPOINT ["java","-jar","/main.jar"]

接下来需要根据这个Dockerfile打包镜像


一般我们自己开发用的Windows电脑都没有安装docker,就需要把target文件夹和Dockerfile文件上传到安装好docker的服务器,在服务器上使用docker构建镜像


我这里在/usr/local下面创建了一个app文件夹



把target文件夹和Dockerfile文件上传到这里,target文件夹中只需要有一个jar包就行,其他文件都可以删掉


在这个目录执行下面命令


docker build -t java-test:v1.0 -f Dockerfile .


-t 后面是镜像名称和版本号


-f 是使用哪个Dockerfile文件,当前目录就有Dockerfile文件,所以这个参数也可以省略不写


命令最后有一个点(.),这个点表示在当前目录下工作(就是COPY命令在复制的时候以当前目录为基准,把当前目录下target文件夹中的所有jar包复制到容器的小Linux下)


执行命令后,等待构建完成



docker images查看镜像是否存在



启动容器 -d后台启动 -p使用8888端口并映射到主机8888端口


docker run -d -p 8888:8888 java-test:v1.0


等他启动完成,就可以访问了


启动好之后如果想查看运行日志


docker logs 容器ID


如果想在另一个服务器也部署一遍这个项目,应该怎么操作,当然不用再重复上面的操作,请移步下篇博文:docker<应用分享>--本地镜像上传dockerhub、从dockerhub拉取镜像


相关文章
|
22天前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
231 4
|
3月前
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
375 2
|
3月前
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
185 2
|
3月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
367 13
|
3月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
163 0
|
3月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
283 0
|
3月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
|
4月前
|
网络协议 Java
在SpringBoot项目中使用Netty实现远程调用
本文介绍了使用Netty解决网络连接性能问题的方法,重点讲解了Netty的NIO特性及其在SpringBoot中的应用。Netty作为高效的NIO框架,支持非阻塞IO,能通过单线程管理多个客户端连接,简化TCP/UDP套接字服务器开发。文章详细展示了Netty在SpringBoot中实现远程调用的过程,包括服务端与客户端代码实现、依赖配置及测试验证。通过示例代码,如`NettyServer`、`NettyClientUtil`等,清晰说明了Netty的工作原理和实际应用,解决了半包等问题,并提供了完整的测试结果。
529 3
|
22天前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
138 4
基于springboot+vue开发的会议预约管理系统
|
5月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
473 1