本文旨在建立一个docker化的基于spring boot完成的服务端,其功能是计算a和b两个数的和。
创建服务
1 打开IDEA Java编辑器 Create New Project
2 左侧选择Spring Initializr,右侧指定JDK和默认的项目生成服务地址.-->Next
3 填写项目基础信息,然后-->Next
4 指定项目依赖软件版本,Next
5 默认就好不用修改,Finish
6 做完以上的事情,我们创建的项目就打开了,删除图中选中的五个文件(夹):
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:这里截了两张图,一张截不全
可以看到,请求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安装配置是否成功,输出格式如下图所示即为成功
创建构建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://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.