- 京东架构师最详解微服务架构:SpringBoot+SpringC
- Spring Cloud和Docker的微服务架构
- 阿里P8分享Java开发的未来主流,必知必会的服务微化量绝招
- Spring Boot与Docker(一):微服务架构和容器化概
- 第二章 Kubernetes学习准备之SpringBoot博客系
- Spring Boot与Docker(四):额外的微服务、更新容
- 腾讯T4终极推荐最新架构文档:SpringBoot+Cloud+
- spring boot + docker 微服务架构
- Spring Boot与Docker(二):使用Spring B
- Spring Boot与Docker(三):构建你的第一个微服务
本文旨在建立一个docker化的基于spring boot完成的服务端,其功能是计算a和b两个数的和。
创建服务
1 打开IDEA Java编辑器 Create New Project
2 左侧选择Spring Initializr,右侧指定JDK和默认的项目生成服务地址.-->Next
![](https://img.haomeiwen.com/i4594295/084da5ab2b570caa.png)
3 填写项目基础信息,然后-->Next
![](https://img.haomeiwen.com/i4594295/279de881668f0153.png)
4 指定项目依赖软件版本,Next
![](https://img.haomeiwen.com/i4594295/1402d174face6d21.png)
5 默认就好不用修改,Finish
![](https://img.haomeiwen.com/i4594295/9e8bbdb6b5a31b15.png)
6 做完以上的事情,我们创建的项目就打开了,删除图中选中的五个文件(夹):
![](https://img.haomeiwen.com/i4594295/6591cdc412947852.png)
7 现在项目已经可以启动了,但是我们还没有任务服务代码,新建Java类,talk is cheap,show you the code(自已创建com.example.demo.web包吧,我截图快累死了):
pom.xml 添加fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.35</version>
</dependency>
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<String, Object> home(@RequestBody JSONObject json) {
Map<String, Object> 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:这里截了两张图,一张截不全
![](https://img.haomeiwen.com/i4594295/236609880cbfacc6.png)
![](https://img.haomeiwen.com/i4594295/9a5e373c497ff837.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安装配置是否成功,输出格式如下图所示即为成功
![](https://img.haomeiwen.com/i4594295/edfedaf788052013.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测试一下:
![](https://img.haomeiwen.com/i4594295/09319e103093a1c3.png)
![](https://img.haomeiwen.com/i4594295/685009c7cb659368.png)
结束!
参考:
- https://yeasy.gitbooks.io/docker_practice/content/introduction/what.html
-
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.
网友评论