spring boot + docker 微服务架构

本文旨在建立一个docker化的基于spring boot完成的服务端,其功能是计算a和b两个数的和。

创建服务

1 打开IDEA Java编辑器 Create New Project

2 左侧选择Spring Initializr,右侧指定JDK和默认的项目生成服务地址.-->Next


spring boot + docker 微服务架构_第1张图片
spring initializr.png

3 填写项目基础信息,然后-->Next


spring boot + docker 微服务架构_第2张图片
product info.png

4 指定项目依赖软件版本,Next
spring boot + docker 微服务架构_第3张图片
指定项目依赖软件版本.png

5 默认就好不用修改,Finish


spring boot + docker 微服务架构_第4张图片
默认就好不用修改.png

6 做完以上的事情,我们创建的项目就打开了,删除图中选中的五个文件(夹):
spring boot + docker 微服务架构_第5张图片
项目概览.png

7 现在项目已经可以启动了,但是我们还没有任务服务代码,新建Java类,talk is cheap,show you the code(自已创建com.example.demo.web包吧,我截图快累死了):

pom.xml 添加fastjson依赖

        
            com.alibaba
            fastjson
            1.2.35
        

MyController.java

package com.example.demo.web;

import com.alibaba.fastjson.JSONObject;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@EnableAutoConfiguration
public class MyController {
    @RequestMapping("/")
    @ResponseBody
    Map home(@RequestBody JSONObject json) {
        Map resp = new HashMap<>();
        Integer a = json.getInteger("a");
        Integer b = json.getInteger("b");
        if (a == null || b == null) {
            resp.put("code", -1);
            resp.put("msg", "参数错误");
            return resp;
        }
        int result = a + b;
        resp.put("code", 1);
        resp.put("result", result);
        return resp;
    }
}

7 启动程序,使用接口测试工具Advanced REST client测试一下吧,ps:这里截了两张图,一张截不全


spring boot + docker 微服务架构_第6张图片
request.png

spring boot + docker 微服务架构_第7张图片
response.png

可以看到,请求a与b相加的结果为3,到这里我们程序就准备好了,下面的事情就是docker化了...

Docker化

打包程序

mvn clean package

安装配置docker

sudo apt -y install docker.io  # 安装docker
sudo gpasswd -a ${USER} docker  #当前用户加入docker用户组
sudo service docker restart      # 重启docker服务
注销用户重新登录
docker version    # 验证docker安装配置是否成功,输出格式如下图所示即为成功
spring boot + docker 微服务架构_第8张图片
验证docker安装配置.png

创建构建docker镜像的工作目录

mkdir -p ~/docker/demo
cd ~/docker/demo

将程序拷贝到~/docker/demo目录,供构建使用

 cp ~/IdeaProjects/demo/target/demo-0.0.1-SNAPSHOT.jar ~/docker/demo/demo.jar

创建Dockerfile文件vim Dockerfile

FROM ubuntu:16.04
COPY ./demo.jar /work/
RUN apt-get update \
    && apt-get install -y openjdk-8-jre
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-adm64/jre
CMD ["java","-jar","/work/demo.jar"]

构建镜像

 docker build -t myservice:v1.0 .

运行

docker run --rm --name myservice -p 8080:8080 myservice:v1.0

再次用Advanced REST client测试一下:

spring boot + docker 微服务架构_第9张图片
request.png
spring boot + docker 微服务架构_第10张图片
response.png

结束!

参考:

  1. https://yeasy.gitbooks.io/docker_practice/content/introduction/what.html
  2. http://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/htmlsingle/
    PS:
    创建spring boot工程也可以通过在线(https://start.spring.io)创建,创建完下载下来用IDEA或eclipse打开就可以coding了,更多docker的知识参考上面的git book.

你可能感兴趣的:(spring boot + docker 微服务架构)