极简方式发布springboot

简介: 由于容器化的引入,使用docker发布项目是必须技能,下文带你掌握如果用docker分别发布前后端项目。本文以最简化的配置方式举例,保证可正常运行。


image.png

由于容器化的引入,使用docker发布项目是必须技能,下文带你掌握如果用docker分别发布前后端项目。本文以最简化的配置方式举例,保证可正常运行。

1.发布springboot项目

1.编写Dockerfile文件

下文以eureka项目举例,可以根据配置修改。

1. # Docker image for springboot file run
2. # VERSION 0.0.1
3. # Author: eangulee
4. # 基础镜像使用java
5. FROM java:8
6. # VOLUME 指定了临时文件目录为/tmp。
7. # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
8. VOLUME /tmp 
9. # eureka-0.0.1-SNAPSHOT.jar为jar名称 将jar包添加到容器中并更名为eureka.jar 注意要有/ 
10. ADD eureka-0.0.1-SNAPSHOT.jar /eureka.jar 
11. # 运行jar包 这里的eureka.jar与上文eureka.jar对应
12. RUN bash -c 'touch /eureka.jar'
13. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]
14. 复制代码

解释下这个配置文件:

VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker  目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker  数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

项目的 jar 文件作为 “eureka.jar” 添加到容器的

ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source

如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。

2.部署文件

在服务器新建一个docker文件夹,将maven打包好的jar包和Dockerfile文件复制到服务器的docker文件夹下

image.png

3.制作镜像

1. cd /root/docker
2. docker build -t eureka .      //注意此处的空格与.  eureka为镜像别名!!!!
3. 复制代码

一定要注意". " .后面有个空格!

image.png

如果出现错误 Step 3/5 : ADD eureka-0.0.1-SNAPSHOT.jar app.jarlstat eureka-0.0.1-SNAPSHOT.jar: no such file or directory

为ADD demo-0.0.1-SNAPSHOT.jar /eureka.jar处配置问题,请检查是否指定了Application启动文件。

4.查看镜像

1. docker images
2. 复制代码

见下图,可以看到本地已经有docker镜像了。

image.png

5.启动容器

  • 第一个8761:为你正在操作虚拟机对外的端口 。
  • 第二个8761:为docker容器对虚拟机提供的接口 。
  • --net=host:以本机ip作为容器地址。
  • eureka:为镜像名称。
1. docker run -d -p 8761:8761 --net =host eureka 
2. 复制代码

注意这里有个坑,如果是使用springboot Netflix,在服务间调用时,会从eureka拉取服务的ip地址。但是不加--net  =host,会拉取docker的虚拟出的地址,当服务间访问时会访问虚拟地址而不是需要访问的服务器地址,所以这里楼主使用服务器地址作为docker的地址。如果有更好办法请联系楼主。

接下来就可以进入容器中,对容器进行操作了。

docker run -it eureka  /bin/bash


相关文章
|
18天前
|
Java 数据库连接 应用服务中间件
基于springboot的母婴健康交流系统
本平台旨在为新手父母提供专业、系统的婴幼儿健康知识与交流空间,整合权威资源,解决育儿信息碎片化与误导问题,支持经验分享与情感互助,助力科学育儿。
|
3天前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
3天前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。
|
16天前
|
JavaScript Java 关系型数据库
基于springboot的电影购票管理系统
本系统基于Spring Boot框架,结合Vue、Java与MySQL技术,实现电影信息管理、在线选座、购票支付等核心功能,提升观众购票体验与影院管理效率,推动电影产业数字化发展。
|
24天前
|
JavaScript 安全 Java
基于springboot的摄影器材租赁回收系统
本系统基于Java、Spring Boot与Vue技术,构建摄影器材租赁回收平台,解决市场不规范、资源浪费等问题。支持在线预约、信用免押、智能评估等功能,提升器材利用率,降低用户成本,推动行业绿色可持续发展。
|
20天前
|
JavaScript Java 关系型数据库
基于springboot的小区车位租售管理系统
针对城市化进程中小区停车难问题,本文设计基于SpringBoot的车位租售管理系统,结合Vue前端与MySQL数据库,实现车位信息数字化、租售流程自动化。系统支持在线查询、申请、支付及数据统计,提升管理效率与用户体验,促进资源优化配置。
|
19天前
|
JavaScript Java 关系型数据库
基于springboot的家政服务预约系统
随着社会节奏加快与老龄化加剧,家政服务需求激增,但传统模式存在信息不对称、服务不规范等问题。基于Spring Boot、Vue、MySQL等技术构建的家政预约系统,实现服务线上化、标准化与智能化,提升用户体验与行业效率,推动家政服务向信息化、规范化发展。
|
14天前
|
存储 JavaScript Java
基于springboot的大学公文收发管理系统
本文介绍公文收发系统的研究背景与意义,分析其在数字化阅读趋势下的必要性。系统采用Vue、Java、Spring Boot与MySQL技术,实现高效、便捷的公文管理与在线阅读,提升用户体验与信息处理效率。
|
10天前
|
人工智能 Java 关系型数据库
基于springboot的画品交流系统
本项目构建基于Java+Vue+SpringBoot+MySQL的画品交流系统,旨在解决传统艺术交易信息不透明、流通受限等问题,融合区块链与AI技术,实现画品展示、交易、鉴赏与社交一体化,推动艺术数字化转型与文化传播。
|
8天前
|
JavaScript 前端开发 Java
基于springboot的养老院管理系统
随着人口老龄化加剧,传统养老院管理效率低下,亟需信息化升级。本文基于Java、Spring Boot、Vue等技术构建智慧养老系统,结合MySQL与MyBatis实现数据高效管理,提升服务精准性与运营效率,推动养老服务向智能化、现代化发展。