SpringBoot应用Docker化

作者: CodeSheep | 来源:发表于2018-04-12 07:18 被阅读960次
    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的世界

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

        `docker build -t springindocker .`
      
    • 0x02. 从刚创建的镜像来启动容器
      docker run -d -p 8080:8080 springindocker

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

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

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


    后记

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


    CodeSheep

    相关文章

      网友评论

        本文标题:SpringBoot应用Docker化

        本文链接:https://www.haomeiwen.com/subject/fwxvhftx.html