SpringBoot应用Docker化
SpringBoot应用Docker化
CodeSheep 发表于1个月前
SpringBoot应用Docker化
  • 发表于 1个月前
  • 阅读 2386
  • 收藏 39
  • 点赞 3
  • 评论 5

移动开发云端新模式探索实践 >>>   

Surface Studio


概述

当下web服务端开发中最火的名词中绝对有微服务的一席之地,其也成为当下互联网后端服务架构演进历程中最闪亮的技术之一。微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。既然服务被分割和微小化了,我们很容易想到如果将其和docker结合,让docker承载着一个个的微服务运行,如此一来将会让服务间耦合度降低,部署简洁,同时系统的架构也更加清晰,便于长期演进,基于此想法有了这篇文章的入门实践!


创建基于maven的spring bt项目

  • pom.xml中加依赖:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

<dependencies>

     <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>
  • 我们只需要在启动类中添加一个简单的restful接口就行了,为了后续浏览器能验证一下,访问/hello接口,能向浏览器返回一个 Hello Docker!的问好!
@RestController
public class DockerDemoSpringApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerDemoSpringApplication.class, args);
    }

    @RequestMapping("/hello")
    public String hello(){
        return "Hello! Docker!”;
    }
}

编写Dockerfile

我们在Spring Bt项目的根目录下建立Dockerfile,用起来完成Docker镜像构建的编排:

FROM maven:3.3.3

ADD pom.xml /tmp/build/
RUN cd /tmp/build && mvn -q dependency:resolve

ADD src /tmp/build/src
        #构建应用
RUN cd /tmp/build && mvn -q -DskipTests=true package \
        #拷贝编译结果到指定目录
        && mv target/*.jar /app.jar \
        #清理编译痕迹
        && cd / && rm -rf /tmp/build

VOLUME /tmp
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar”]

进入Docker的世界

    1. 在Spring项目根目录下根据Dockerfile来生成docker镜像

      docker build -t springindocker .

    1. 从刚创建的镜像来启动容器

      docker run -d -p 8080:8080 springindocker

    1. 打开浏览器,或者使用 curl 访问http://127.0.0.1:8080就可以看到web服务器里返回的Hello Docker!!!问好的字符了

至此就说明你成功将一个基于 Spring Boot 的应用 Docker 化了。

本文虽然只是以一个Demo,但一个大型的web项目无非也就是由诸多这种Rest服务,外加各种基础设施、数据库、通信、中间件以及调度来构成,每个子元素的开发也依然遵循这里的基本流程。


后记

作者更多的原创文章在开源中国

作者一些其他容器化应用方面的文章:

作者更多的SpringBt实践文章在此:


CodeSheep

标签: Docker Spring Boot
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 84
博文 27
码字总数 36461
评论 (5)
ixiaohei
docker-maven-plugin了解下
风华神使
正着是:以jre为基础镜像,把jar包放进去,然后运行。(即,不在docker中编译)
rockingMan

引用来自“风华神使”的评论

正着是:以jre为基础镜像,把jar包放进去,然后运行。(即,不在docker中编译)
是的
liuqiangchengdu

引用来自“风华神使”的评论

正着是:以jre为基础镜像,把jar包放进去,然后运行。(即,不在docker中编译)

引用来自“rockingMan”的评论

是的
的确这么干才是正道
卖爷爷的老红薯
用的com.palantir.docker这个插件。。。
×
CodeSheep
生活艰难,卖文苟延~
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: