资讯专栏INFORMATION COLUMN

SpringBoot项目打包为Docker镜像

IT那活儿 / 4050人阅读
SpringBoot项目打包为Docker镜像

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


  
Docker是一个开源的应用容器引擎,使用Docker可以实现开发环境、测试环境、生产环境的一致性。
下面介绍将SpringBoot项目打包成Docker镜像的两种方式



使用Dockerfile文件.生成镜像

先将SpringBoot项目打包成jar包(这里使用示例工程docker-demo),然后放到有docker环境的服务器中。

在jar包目录下新建Dockerfile文件,内容如下:

运行命令【docker build -t docker-demo:0.0.1 .】构建镜像:

运行【docker images】查看docker-demo:0.0.1镜像构建成功。

运行【docker run -d -p 8081:8081 docker-demo:0.0.1】启动镜像,并将docker容器的8081端口映射到宿主机的8081端口。

查看运行的容器,可以看到docker-demo:0.0.1已正常运行,且查看容器日志也正常启动,访问程序功能可以正常响应。



利用maven插件生成镜像

maven是目前最流行的Java项目管理工具之一,我们也可以利用maven进行docker镜像打包。

Dockerfile Maven是Spotify公司提供的一款maven插件,用以辅助Docker项目进行Dockerfile文件构建、标签和发布。

首先,在pom.xml文件中引入该插件。此处定义了构建的目标、仓库名称、镜像名称、镜像版本等信息。

在项目源码目录内新建Dockerfile文件,内容如图。

接下来通过maven命令【mvn clean package】构建项目,前提本地需要有maven和docker环境,截取部分maven构建日志如下:

[INFO] --- dockerfile-maven-plugin:1.4.13:build (default) @ docker-demo ---

[INFO] dockerfile: null

[INFO] contextDirectory: /root/docker-demo

[INFO] Building Docker context /root/docker-demo

[INFO] Path(dockerfile): null

[INFO] Path(contextDirectory): /root/docker-demo

[INFO]

[INFO] Image will be built as shsnc/docker-demo:0.0.2

[INFO]

[INFO] Step 1/7 : FROM java:8

[INFO] Trying to pull repository docker.io/library/java ...

[INFO] Pulling from docker.io/library/java

[INFO] Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d

[INFO] Status: Image is up to date for docker.io/java:8

[INFO]  ---> d23bdf5b1b1b

[INFO] Step 2/7 : MAINTAINER suntt

[INFO]  ---> Using cache

[INFO]  ---> 5dc4a92a74f1

[INFO] Step 3/7 : WORKDIR /app/docker-demo

[INFO]  ---> Using cache

[INFO]  ---> fd21efce4a6e

[INFO] Step 4/7 : ARG JAR_FILE

[INFO]  ---> Running in d9e1be8b3266

[INFO]  ---> e54019a81490

[INFO] Removing intermediate container d9e1be8b3266

[INFO] Step 5/7 : ADD target/docker-demo /app/docker-demo

[INFO]  ---> 579ce6cfedd4

[INFO] Removing intermediate container 4c4d75bc4519

[INFO] Step 6/7 : EXPOSE 8081

[INFO]  ---> Running in 8adc60ec81b4

[INFO]  ---> 50ff3b856ce0

[INFO] Removing intermediate container 8adc60ec81b4

[INFO] Step 7/7 : ENTRYPOINT java -jar /app/docker-demo/docker-demo.jar

[INFO]  ---> Running in 855ffffd626ec9

[INFO]  ---> c726d26352c1

[INFO] Removing intermediate container 855ffffd626ec9

[INFO] Successfully built c726d26352c1

[INFO]

[INFO] Detected build of image with id c726d26352c1

[INFO] Building jar: /root/docker-demo/target/docker-demo-docker-info.jar

[INFO] Successfully built shsnc/docker-demo:0.0.2

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 40.518 s

[INFO] Finished at: 2022-07-20T10:47:52+08:00

[INFO] ------------------------------------------------------------------------

查看docker镜像,可以看到shsnc/docker-demo:0.0.2镜像构建成功。

启动镜像,由于方式一占用了宿主机8081端口,此处将容器内8081端口映射至宿主机8082端口。

查看运行中的容器,可看到方式一和方式二构建的镜像都已成功运行,后续访问方式和普通Java工程没有区别,通过maven方式构建镜像成功。


本文作者:孙涛涛(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129329.html

相关文章

  • 一个网站的微服务架构实战(1)dockerdocker-compose

    摘要:文件服务器项目为文章共享社区,少不了的就是一个存储文章的文件服务器,包括存储一些图片之类的静态资源。例如数据库的数据文件的配置文件和文件服务器目录。 前言 这是一次完整的项目实践,Angular页面+Springboot接口+MySQL都通过Dockerfile打包成docker镜像,通过docker-compose做统一编排。目的是实现整个项目产品的轻量级和灵活性,在将各个模块的镜像...

    CODING 评论0 收藏0
  • springboot项目 docker部署实践

    摘要:所以就尝试在环境下利用阿里云仓库完成部署。从阿里云中拉取镜像启动命名空间仓库名称容器镜像镜像版本号这样就能将本地的项目打包成容器在阿里云上发布了。 网上查了下大部分boot项目部署都是在linux和docker hub环境下完成的,由于本人开发环境在windows下面,并且docker容器也是使用的docker tools,而且也没有做docker hub的加速。所以就尝试在windo...

    DDreach 评论0 收藏0
  • 市长信箱邮件查询服务: 将SpringBoot应用部署到Docker

    摘要:市长信箱邮件查询服务将应用部署到在上一章我完成了将部署到的工作和都具有能快速启动的特性因此是一对用来部署微服务的黄金搭档在计划中基于的应用也将部署到之上那我们就开始行动吧将部署到上需要执行以下步骤保证打包后的可执行能正常启动在应用中编写镜像 市长信箱邮件查询服务: 将SpringBoot应用部署到Docker 在上一章, 我完成了将ES部署到Docker的工作. SpringBoot和...

    SKYZACK 评论0 收藏0
  • 使用 Docker 部署 Spring Boot项目

    摘要:项目上传将项目上传到华为云服务器,没啥好说的。环境搭建建议在环境下安装,环境搭建比较复杂且容易出错,使用来安装环境很方便。使用部署项目将项目复制到服务器中,进入项目路径下进行打包测试。 项目搭建 Spring Boot 项目代码 @RestController public class SpringBootDockerApplication { public static vo...

    venmos 评论0 收藏0
  • SpringBoot使用Docker快速部署项目

    摘要:它是目前最流行的容器解决方案。创建文件在中加入以下信息注意必须和包在同一路径下基础镜像必要,代表你的项目将构建在这个基础上面允许指定端口转发创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。 1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接...

    tomato 评论0 收藏0
  • Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)

    摘要:应用化极简教程陈光剑基于的企业级应用开发最佳实践前面的章节中,我们都是在环境中开发运行测试应用程序。关键字是分布式应用微服务容器虚拟化。通常,在企业项目实践中,会实现一套应用部署发布的自动化运维平台工具。 Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)—— 基于 Gradle + Kotlin的企业级应用开发最佳实践 前面的章节中,...

    Donne 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<