(1) 首先要有一个可以工作的SpringBoot应用。
从Jerry的github上clone这个github repository到本地:
cd进入项目文件夹内,使用命令行mvn spring-boot:run
当看到控制台输出 Tomcat started on port: 5030(http)的提示后,说明SpringBoot应用在本地启动成功,
这时用下面的url可以访问这个SpringBoot应用,如果一切正常,
http://localhost:5030/commerce/product
可以在浏览器里看到Hello World:
注:该SpringBoot应用监听的端口为5030,如果想修改成其他端口,在application.properties里修改。
(2) 下一步是登录阿里云服务器,将该SpringBoot打包成Docker镜像。
我的github仓库里已经写好了一个Dockerfile文件,Docker镜像就是基于该Dockerfile进行制作。
第一行的FROM命令,指定了我们这个镜像基于openjdk这个镜像制作。
第二行的VOLUME命令,定义了一个持久化存储,指向容器中的tmp文件夹。SpringBoot应用为内置的Tomcat服务器实例创建的默认工作目录为tmp,通过该命令,可以在运行Docker的宿主机目录/var/lib/docker创建一个临时的目录,挂接到容器内部的tmp去。
如果你的SpringBoot应用不会进行持久化写操作,则该步骤可以省略。
第三行,把本地目录下target文件夹里打好的jar文件添加到容器里,重命名为app.jar.
第四行:ENV命令的作用是设置环境变量。在复杂的使用场景中,我们可能需要使用各种参数启动JVM,这些参数通过ENV命令设置的环境变量传入Java命令。在这个简单的例子里可以省略环境变量的设置。
第五行:ENTRYPOINT,顾名思义,容器镜像运行的起始点。
了解了这个Dockerfile的作用和语法后,我们使用docker build基于这个Dockerfile生成一个镜像。
> docker build -t jerry/springbootexample:v1 .
上面命令行最后的"."并不是表示结束的标点符号,而是Linux系统里的".", 代表当前目录。
执行上述命令行后,会看到我们在Dockerfile里定义的5条命令被依次执行,首先是下载openJDK这个基础镜像:
然后依次执行剩余步骤。
看到Successfully built 提示消息后,说明该镜像成功创建了。
使用docker images命令行能看到这个镜像,大小为136MB.
(3) 最后,就是使用docker run命令执行这个镜像。
run命令有很多参数,比如以交互式方式运行镜像:
> docker run -it jerry/springbootexample:v1
这种方式下,镜像处理用户请求时的输出会自动重定向到宿主机的控制台上。
而-p参数可以实现端口映射,下面命令行的含义是把Docker内SpringBoot应用监听的端口映射到宿主机的8000端口。这样,当用户在浏览器里访问时,使用的端口应该是宿主机的端口8000.
> docker run -p 8000:9000 --name jerrydockerdemo -d jerry/springbootexample:v1
可以使用docker ps命令拿到该运行镜像的ID,再用docker stop命令终止镜像的运行。
也可以使用命令docker exec -it, 进入一个正在运行的容器内部:
> sudo docker exec -it 8302db78f838 /bin/sh
我们之前在编写Dockerfile时,用VOLUME指令创建的tmp,此时进入容器内部就可以观察到了。在tmp里,果然发现了SpringBoot在执行过程中,其内置的Tomcat实例运行时工作目录下生成的数据。
相关推荐
将Spring boot应用打包成镜像放到docker中运行: https://blog.csdn.net/anla_/article/details/79943251
docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的。仓库里存放的是镜像文件,...
springBoot项目打成docker镜像资料
NULL 博文链接:https://wiselyman.iteye.com/blog/2153423
Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,并发布到任何流行的Linux或Windows操作系统的机器上。本代码是用dockerfile打包springboot应用。详细可参考:...
arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构...
构建一个Java应用的Docker镜像 假设Java应用名为 docker-demo 1、在项目代码打成jar包:demo-docker.jar # 这里我用mvn来打包 # -Dmaven.test.skip=true --- 跳过检查 mvn package -Dmaven.test.skip=true 2、创建...
1、该文档介绍springboot项目docker打包具体步骤及项目相关配置,包含手动执行docker打包上传镜像和通过idea工具打包上传镜像。 2、介绍docker打包相关配置及注意事项 3、介绍springboot打包镜像上传nexus私有镜像...
Docker打包制作rocketmq镜像(Dockerfile方式),并运行启动。 这里提供所有需要的文件,包括字体 ,lib,openoffice安装包。 提供dockerfile,build镜像脚本。
Java开发案例-springboot-50-docker-compose安装Graylog实现日志监控-源代码+文档.rar Java开发案例-springboot-50-docker-compose安装Graylog实现日志监控-源代码+文档.rar Java开发案例-springboot-50-docker-...
jar包打包成docker镜像文件
这个手册是提供给大家学习TongWeb制作docker镜像!TongWeb打docker镜像.docx,
毕业设计基于springboot+flutter+docker前后端分离的个人习惯监测系统源码+论文,该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要...
安装maven环境,通过docker命令打包镜像,然后编写docker-compose编排文件,部署springboot工程
基础镜像:镜像中运行的项目或者启动的一些服务,都要在一个基础镜像之上才能运行这些服务,比如一个django项目或者mysql数据库等,都要在Linux操作系统之上来运行,所以打包我们自己的项目时,必须要有个基础镜像来...
毕业设计-基于springboot+flutter+docker开发的前后端分离的个人习惯监测系统源码+论文,该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该...
docker 镜像资源共享
主要介绍了Springboot微服务打包Docker镜像流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包
rabbitmq docker镜像压缩包