• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 详解在Docker容器中运行Spring Boot应用

详解在Docker容器中运行Spring Boot应用

作者:我是阿永吖 字体:[增加 减小] 来源:互联网

本文主要包含Docker运行Spring,Boot,spring,boot,docker,docker部署springboot等服务器相关知识,我是阿永吖 希望可以进行参考

spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配置。另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为Spring Boot提供了一种快速构造微服务(Micro-Service)的能力。

Docker与Spring Boot

Docker是一种Linux容器的实现,Linux容器是基于进程的轻量级资源隔离技术,每一个容器对应操作系统中的一个进程,但是它又会有自己的网络空间、文件系统、PID等。Docker除了实现Linux容器,还使得容器具有“社会化”的功能,用户可以将容器镜像发布在Docker Hub与其他开发者共享、协作。安装Docker的教程请参考官方文档

Spring Boot应用通常被构建为一个可单独执行的jar包,通过Java -jar ...运行,但是框架本身并没有提供以服务形式运行在后台的方法,通常需要借助Systemd, Supervisord等进程管理工具来实现。另一方面,虽然应用运行环境非常的简单,但是将他们容器化为Docker容器镜像并运行,对于自动化部署、运维都是非常有利的。

本文将以一个最简单的Spring Boot开发的Web应用为例,讲解如何将其容器化运行。本文的重点是构建Docker镜像、运行Docker容器

构建并Spring Boot应用

在应用代码编写完成后,可以直接将其打包并运行:

  1. Maven: mvn package && java -jar target/spring-boot-docker-0.1.0.jar
  2. Gradle: gradle build && java -jar build/libs/gs-spring-boot-docker-0.1.0.jar

在浏览器地址栏种输入[http://localhost:8080/](http://localhost:8080/)可以访问应用

Dockerfile构建镜像

Docker提供了Dockerfile格式的文件来构建应用镜像,现在开始创建一个Spring Boot应用的Dockerfile:

FROM java:8
VOLUME /tmp
ADD spring-boot-docker-0.1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:

  1. VOLUME /tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
  2. ADD spring-boot-docker-0.1.0.jar app.jar 将应用jar包复制到/app.jar
  3. ENTRYPOINT表示容器运行后默认执行的命令

Dockerfile非常的简单,编辑完成后运行docker构建镜像命令:

docker build -t tmy/spring-boot-app .

然后运行Docker容器:

docker run -d -p 8080:8080 --name sample-app tmy/spring-boot-app

其中-d表示后台运行容器,这也就自然地解决的Spring Boot不支持后台运行应用程序的问题。-p 8080:8080表示将容器内部的8080端口映射到宿主机器的8080端口,这样就可以通过宿主机器直接访问应用。--name sample-app给容器取一个容易记住的名字方便日后管理。

使用Maven/Gradle创建Docker镜像

为了方便Java开发者创建Docker镜像,Maven/Gradle都提供了响应的插件。

Maven

<properties>
   <docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
  <plugins>
    <plugin>
      <groupId>com.spotify</groupId>
      <artifactId>docker-maven-plugin</artifactId>
      <version>0.2.3</version>
      <configuration>
        <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
        <dockerDirectory>src/main/docker</dockerDirectory>
        <resources>
          <resource>
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
          </resource>
        </resources>
      </configuration>
    </plugin>
  </plugins>
</build>

上述pom.xml包含了docker-maven-plugin的配置:

  1. imageName指定了镜像的名字
  2. dockerDirectory指定Dockerfile的位置
  3. resources是指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入

经过以上配置后,运行下列命令可以在本地Docker中创建一个镜像:

$ mvn package docker:build

Gradle

Gradle同样也有支持Docker的插件:

buildscript {
  ...
  dependencies {
    ...
    classpath('se.transmode.gradle:gradle-docker:1.2')
  }
}

group = 'springio'

...
apply plugin: 'docker'

task buildDocker(type: Docker, dependsOn: build) {
 push = true
 applicationName = jar.baseName
 dockerfile = file('src/main/docker/Dockerfile')
 doFirst {
  copy {
   from jar
   into stageDir
  }
 }
}

上述配置和Maven基本类似,执行以下命令构建镜像:

$ gradle build buildDocker

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • 详解使用docker搭建hadoop分布式集群
  • 详解基于docker 如何部署surging分布式微服务引擎
  • Docker简单安装与应用入门教程
  • Docker搭建简单的应用栈与容器Hello World访问详解
  • Docker相关命令应用汇总
  • 详解如何在 Docker 中设置 Go 并部署应用
  • Docker 实现浏览器里开发Android应用的功能
  • Docker 搭建lamp应用实例详解
  • 在Docker上开始部署Python应用的教程
  • 在Docker快速部署Node.js应用的详细步骤
  • Docker实现分布式应用功能教程
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解在Docker容器中运行Spring Boot应用

相关文章

  • CentOS7.2下安装docker容器教程
  • 一步一步教你安装openstack(图文)
  • linux XenServer 6.2安装图解教程
  • CentOS7.3中Docker的安装教程
  • Docker 学习文档(知识结构整理)
  • Docker如何添加自定义网桥
  • Docker Machine是什么?
  • CentOS7 禁用Transparent Huge Pages的实现方法
  • 不使用sudo 执行Docker命令的方法
  • Docker Cloud实现部署应用操作详解

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 详解Ubuntu Docker Registry 搭建私有仓库
    • Docker 运行时的用户与组管理的方法
    • 如何在Hyper-V虚拟机上安装WSUS服务器技巧
    • 个人技术博客网站推广,技术博客网站推广
    • 虚拟机下Linux系统Hadoop单机/伪分布式配置:Hadoop2.5.2+Ubuntu14.04(半原创),hadoophadoop2.5.2
    • hadoop动态增加和删除节点方法介绍
    • 详解Docker下使用Elasticsearch可视化Kibana
    • Docker容器自启动的实现方法
    • Docker 中快速安装tensorflow环境的方法步骤
    • 如何免sudo使用docker命令详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有