本文旨在建立一個docker化的基于spring boot完成的服務(wù)端锌畸,其功能是計算a和b兩個數(shù)的和榜掌。
創(chuàng)建服務(wù)
1 打開IDEA Java編輯器 Create New Project
2 左側(cè)選擇Spring Initializr,右側(cè)指定JDK和默認的項目生成服務(wù)地址.-->Next
3 填寫項目基礎(chǔ)信息养筒,然后-->Next
4 指定項目依賴軟件版本盟迟,Next
5 默認就好不用修改产禾,F(xiàn)inish
6 做完以上的事情,我們創(chuàng)建的項目就打開了乡革,刪除圖中選中的五個文件(夾):
7 現(xiàn)在項目已經(jīng)可以啟動了寇僧,但是我們還沒有任務(wù)服務(wù)代碼摊腋,新建Java類,talk is cheap,show you the code(自已創(chuàng)建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", "參數(shù)錯誤");
return resp;
}
int result = a + b;
resp.put("code", 1);
resp.put("result", result);
return resp;
}
}
7 啟動程序兴蒸,使用接口測試工具Advanced REST client測試一下吧,ps:這里截了兩張圖细办,一張截不全
可以看到橙凳,請求a與b相加的結(jié)果為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服務(wù)
注銷用戶重新登錄
docker version # 驗證docker安裝配置是否成功笑撞,輸出格式如下圖所示即為成功
創(chuàng)建構(gòu)建docker鏡像的工作目錄
mkdir -p ~/docker/demo
cd ~/docker/demo
將程序拷貝到~/docker/demo目錄岛啸,供構(gòu)建使用
cp ~/IdeaProjects/demo/target/demo-0.0.1-SNAPSHOT.jar ~/docker/demo/demo.jar
創(chuàng)建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"]
構(gòu)建鏡像
docker build -t myservice:v1.0 .
運行
docker run --rm --name myservice -p 8080:8080 myservice:v1.0
再次用Advanced REST client測試一下:
結(jié)束黔龟!
參考:
- https://yeasy.gitbooks.io/docker_practice/content/introduction/what.html
-
http://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/htmlsingle/
PS:
創(chuàng)建spring boot工程也可以通過在線(https://start.spring.io)創(chuàng)建护昧,創(chuàng)建完下載下來用IDEA或eclipse打開就可以coding了,更多docker的知識參考上面的git book.