极简方式发布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


相关文章
|
14天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
22天前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
71 2
|
22天前
|
前端开发 JavaScript Java
6个SpringBoot 项目拿来就可以学习项目经验接私活
6个SpringBoot 项目拿来就可以学习项目经验接私活
33 0
|
1月前
|
前端开发 Java 关系型数据库
SpringBoot+MyBatis 天猫商城项目
SpringBoot+MyBatis 天猫商城项目
55 1
|
1月前
|
JSON JavaScript 前端开发
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
37 0
|
1月前
|
NoSQL Java 数据库
【问题篇】springboot项目通过数据库限制实例端口号
【问题篇】springboot项目通过数据库限制实例端口号
19 0
|
25天前
|
Java Maven 微服务
springboot项目开启远程调试-jar包
springboot项目开启远程调试-jar包
19 0
|
12天前
|
JSON 前端开发 Java
统一异常处理:让Spring Boot项目异常更优雅
统一异常处理:让Spring Boot项目异常更优雅
23 1
|
15天前
|
JSON 前端开发 Java
Springboot前后端分离项目统一封装返回结果
Springboot前后端分离项目统一封装返回结果
|
1月前
|
Java Unix Shell
springboot项目重启的shell命令
springboot项目重启的shell命令
15 0