1、目标

Dockerfile文件用来构建Docker镜像,它由一系列命令和参数构成,接下来演示一下如何使用Docker发布SpringBoot项目。

2、准备

a、SpringBoot项目

该项目名称为demo,并支持SpringMVC+Thymeleaf ;创建index.html首页面,代码如下:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>首页</title></head><body>HelloWorld</body>
</html>
b、生成jar包

通过Maven命令package为demo项目生成jar包,如下所示:

3、镜像

a、Docker环境

视频教程:https://www.bilibili.com/video/BV1xv4y1S7kA

b、上传jar文件

将jar文件上传到指定目录,这里为/opt/docker目录;

c、dockerfile文件

jar文件同级目录下创建dockerfile文件,该文件一般由基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令四部分构成,Dockerfile 中注释使用’#’ ,如下所示:

# 指定当前镜像所基于的基础镜像;如果是第一次打包,则自动下载java 8镜像作为基础镜像,再次制作镜像,则不会再下载java 8镜像
FROM java:8
# 指定维护者信息
MAINTAINER GaoHuanjie
# 指定临时文件目录/tmp,该配置将在主机/var/lib/docker目录下创建临时文件,并链接到容器的/tmp;该配置可选,/tmp目录是Spring Boot内嵌Tomcat容器默认使用的工作目录
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
# entrypoint 进入点
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

d、制作镜像

①、进入jar文件目录:

[root@localhost ~]# cd /opt/docker/

②、构建镜像

#-t 指定镜像,语法name[:Tag],:Tag可以省略,此时为latest。注意:最后有个"."!
[root@localhost docker]# docker build -t example:1.0.0 .
Sending build context to Docker daemon  18.08MB
Step 1/6 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
...省略...
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8---> d23bdf5b1b1b
Step 2/6 : MAINTAINER GaoHuanjie---> Running in effe02fc49f0
Removing intermediate container effe02fc49f0---> 6555e9a4bc2b
Step 3/6 : VOLUME /tmp---> Running in 457c804affb9
Removing intermediate container 457c804affb9---> 0ab442511f3f
Step 4/6 : ADD demo-0.0.1-SNAPSHOT.jar app.jar---> c0693928296f
Step 5/6 : RUN bash -c 'touch /app.jar'---> Running in c03cd8621bfa
Removing intermediate container c03cd8621bfa---> ebf10840a074
Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]---> Running in e61133c98d4a
Removing intermediate container e61133c98d4a---> 4928f88f3445
Successfully built 4928f88f3445
Successfully tagged example:1.0.0
[root@localhost docker]#

4、容器

a、启动容器
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
example      1.0.0     4928f88f3445   2 minutes ago   679MB
java         8         d23bdf5b1b1b   5 years ago     643MB
[root@localhost docker]# docker run --name sample -d -p 8080:8080 example:1.0.0
b、开放端口
[root@localhost docker]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
[root@localhost docker]# firewall-cmd --reload

5、测试

启动浏览器—>访问http://192.168.1.100:8080,如下所示:

如何使用Docker发布SpringBoot项目相关推荐

  1. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  2. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  3. 又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式

    又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式 部署思路: 具体步骤: 1.打成jar 2.上传到服务器 3.启动JDK容器 4.进入JDK 容器 启动 项 ...

  4. 使用IDEA集成docker部署springboot项目及bug解决并连同redis、MySQL

    流程介绍 安装docker(windows) 配置docker源加速 docker安装redis IDEA集成docker # IDEA连接docker 配置springboot项目 打包成docke ...

  5. 使用Docker部署SpringBoot项目(避坑+超级详细版本)

    使用Docker部署SpringBoot项目(避坑+超级详细版本) 首先呢,非常感谢我们一起相遇在这个地方,想必此刻的你也是在一个学习求知的过程,我们一样,我们都是在求知的路上匍匐前进!看到这篇文章, ...

  6. docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...

    以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件. 但是最近入坑Docker,将Spr ...

  7. 史上最全阿里云服务器上Docker部署Springboot项目 实战 每一步都带详细图解!!!

    在学习编程的时候,我们都会想,该怎么把自己写出来的项目和创意分享给大家勒.直接给代码吗?平常人看不懂,环境还需要一大堆. 那么部署到服务器上,让人能够直接访问,我想这应该是最棒的方式了吧. 使用Doc ...

  8. jenkins+kubernetes(k8s)发布Springboot项目

    jenkins+kubernetes(k8s)发布Java项目 准备工作 机器列表 镜像列表 创建一个java项目 创建jenkins镜像 Jenkins服务配置 启动jenkins 访问jenkin ...

  9. 就几条命令,一键学会Docker部署SpringBoot项目

    今天,我们使用docker的安装方式,来安装一下我们的项目,实验环境是centos 7系统上,本实验适用部署大部分Springboot项目.文末有40分钟的视频教学哈! eblog项目地址: http ...

最新文章

  1. BaseAdapter的一个简单案例
  2. camel apache_短款Apache Camel K
  3. c# sizeof_C#程序演示sizeof()运算符的示例
  4. [Unity3D]深度相机 Depth Camera
  5. CSS 画一条横线/竖线
  6. Android编译构建,教程11:使用Android Studio编译构建behaviac
  7. iexplore.exe_如何一次杀死所有iexplore.exe进程?
  8. python时间计算天数差
  9. 最小二乘法多元函数超曲面拟合(python)
  10. Mysql---将多条查询记录合并为一条,用逗号连接展示
  11. php人民币函数,php人民币小写转大写的函数,不限长度,精确到分(推荐)
  12. 美的大数据挖掘笔试总结
  13. You do not have sufficient permissions to access the inventory ‘/u01/app/oraInventory‘.
  14. 如果阿里、华为们的智慧城市只是停留顶层设计,那么我们终将会被抛下
  15. ubuntu安装bochs别忘了bochs-x
  16. ArcGIS基础实验操作100例--实验22NoData数据处理
  17. 常用Benchmark
  18. 还重构?就你那代码只能铲了重写!
  19. WebSocket实现简易版的多人聊天室
  20. 蒙奇奇深度学习第一课:Windows10安装pytorch和tensorflow(避坑必读,吐血整理)

热门文章

  1. 《 Python程序设计项目案例》— 用Python开发的基于TCP通讯协议的私人聊天室 (期末大作业、结课作业、课程设计、毕业设计)
  2. 4000w粉网红宣告散伙,抖音顶流为何总是一拍两散?
  3. java oo_我爱oo,我爱java
  4. Apad Qzone项目总结(二)---换肤功能实现!!!
  5. 读书笔记-流畅的python(1-6章)
  6. VTK:数据动画用法实战
  7. java hid_Java HIDAPI - 异步读取
  8. 【原创】正确认识计算机科学中的“一般”和“个别”的关系
  9. iPad 使用技巧:备忘录
  10. 民法典假房产证过户有效吗