`
JerryWang_SAP
  • 浏览: 1085087 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

一步步把一个SpringBoot应用打包成Docker镜像并运行

阅读更多

(1) 首先要有一个可以工作的SpringBoot应用。

从Jerry的github上clone这个github repository到本地:

 

cd进入项目文件夹内,使用命令行mvn spring-boot:run

当看到控制台输出 Tomcat started on port: 5030(http)的提示后,说明SpringBoot应用在本地启动成功,

这时用下面的url可以访问这个SpringBoot应用,如果一切正常,

localhost:5030/commerce

可以在浏览器里看到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实例运行时工作目录下生成的数据。

0
1
分享到:
评论

相关推荐

    将Spring boot应用打包成镜像放到docker中运行

    将Spring boot应用打包成镜像放到docker中运行: https://blog.csdn.net/anla_/article/details/79943251

    详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的。仓库里存放的是镜像文件,...

    springBoot项目打成docker镜像资料.zip

    springBoot项目打成docker镜像资料

    Windows中将springboot项目运行到docker的镜像中,并将镜像打包到Linux中运行

    知识点: 1. Dockerfile基础:Dockerfile是一个文本文件,包含了用户可以...通过这些步骤,可以实现将复杂的Java应用简化为一个Docker镜像,然后在任意安装了Docker的环境中快速部署运行,从而提高了开发和部署的效率。

    将Spring Boot程序打包成docker镜像

    NULL 博文链接:https://wiselyman.iteye.com/blog/2153423

    使用Dockerfile配置Springboot应用服务发布Docker镜像-源码

    Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,并发布到任何流行的Linux或Windows操作系统的机器上。本代码是用dockerfile打包springboot应用。详细可参考:...

    mysql8 docker 镜像

    Docker是一个开源的应用容器引擎,可以将应用程序及其依赖打包到一个可移植的容器中,然后发布到任何支持Docker的平台上。MySQL是一种流行的开源关系型数据库管理系统,广泛用于Web应用程序和企业级应用程序中。将...

    docker离线镜像资源jdk21镜像

    Docker是一种轻量级的虚拟化技术,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后在任何安装了Docker的机器上运行。Docker容器与传统的虚拟机不同,因为容器共享操作系统内核,并且不需要运行整个操作...

    ollama+openwebui docker 镜像

    在介绍ollama+openwebui Docker镜像的构建和运行过程中,我们首先要了解Docker技术的基础知识,以及如何通过Dockerfile定义一个镜像,并最终通过命令行运行它。Docker作为一种轻量级的虚拟化技术,它允许开发者打包...

    arm 架构 docker运行nginx镜像包

    arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构...

    postgres Docker镜像-v16.4

    Docker是一个开源的应用容器引擎,它允许开发者将应用及其依赖包打包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 ...

    mysql5.7的docker镜像

    总结以上内容,本文详细介绍了如何获取和使用MySQL 5.7的Docker镜像,包括镜像的概念、MySQL 5.7的特性、下载和运行镜像的方法,以及数据持久化的方式。通过本文,读者应能掌握如何利用Docker技术来部署MySQL 5.7...

    docker镜像 mysql-5.7.44.tar

    Docker是一种轻量级的虚拟化技术,它允许开发者打包应用以及应用的运行环境到一个可移植的容器中,然后可以在任何支持Docker的系统上运行。Docker镜像是一种轻量级、可执行的独立软件包,包含运行应用程序所需的所有...

    构建一个Java应用的Docker镜像

    构建一个Java应用的Docker镜像 假设Java应用名为 docker-demo 1、在项目代码打成jar包:demo-docker.jar # 这里我用mvn来打包 # -Dmaven.test.skip=true --- 跳过检查 mvn package -Dmaven.test.skip=true 2、创建...

    Springboot项目docker打包

    1、该文档介绍springboot项目docker打包具体步骤及项目相关配置,包含手动执行docker打包上传镜像和通过idea工具打包上传镜像。 2、介绍docker打包相关配置及注意事项 3、介绍springboot打包镜像上传nexus私有镜像...

    mysql 8.4.2 docker镜像包

    在Docker镜像包中使用Linux 8作为基础操作系统,可以为运行MySQL数据库提供一个稳定且功能强大的环境。 在使用MySQL 8.4.2 Docker镜像包时,需要确保自己已经安装了Docker环境。Docker可以运行在多种操作系统之上,...

    docker的zookeeper镜像

    Docker是一种开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何支持Docker的机器上。Zookeeper是一个开源的分布式协调服务,它提供了一个简单的接口来实现集群...

    docker镜像openjdk8离线加载包

    Docker镜像是一个轻量级、可执行的独立软件包,包含运行应用程序所需要的所有内容:代码、运行时、库、环境变量和配置文件。由于镜像包含应用程序的执行环境,这就意味着它比传统的虚拟机更为轻便、启动速度更快。 ...

    Ubuntu:20.04 ARM64 docker镜像

    docker是一种开源的应用容器引擎,它允许开发者将应用及其依赖环境打包成一个轻量级、可移植的容器,然后在任何支持docker的平台上运行。docker镜像则是这个容器的基础,它包含了运行容器所需的所有文件系统和配置...

Global site tag (gtag.js) - Google Analytics