Docker技術(shù)發(fā)展為微服務(wù)提供便利環(huán)境,使用Docker部署Spring Boot項(xiàng)目是簡單易操作。步驟如下:
一.安裝Docker
在Docker Store下載Mac版本,鏈接如下:
https://store.docker.com/editions/community/docker-ce-desktop-mac
安裝成功,在頂部的菜單欄出現(xiàn)如下圖標(biāo):
二、搭建Spring Boot項(xiàng)目
在網(wǎng)上有很多文章說明怎樣搭建Spring Boot項(xiàng)目,在這里不詳細(xì)說了,請自行查找相關(guān)資料哦。
在演示Spring boot項(xiàng)目例子,添加DemoController,代碼如下:
package com.gloria.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class DemoController {
@ResponseBody
@RequestMapping(value="")
public String heloWord() {
return "HelloWord";
}
}
添加后啟動Spring Boot項(xiàng)目,啟動成功后使用瀏覽器訪問http://localhost:8080/,在頁面看到打印:
HelloWorld

三、Spring Boot 項(xiàng)目添加 Docker 支持
- 在pom.xml的properties中添加Docker鏡像名稱,如下所示
<properties>
? <docker.image.prefix>springboot</docker.image.prefix>
</properties>
- 在pom.xml的plugins添加構(gòu)建Docker插件
?<build>
? <plugins>
? <plugin>
? <groupId>org.springframework.boot</groupId>
? <artifactId>spring-boot-maven-plugin</artifactId>
? </plugin>
? <!-- Docker maven plugin -->
? <plugin>
<groupId>com.spotify</groupId>
? <artifactId>docker-maven-plugin</artifactId>
? <version>0.4.13</version>
? <configuration>
? <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
? <dockerDirectory>src/main/docker</dockerDirectory>
? <resources>
? <resource>
? <targetPath>/</targetPath>
? <directory>${project.build.directory}</directory>
? <include>${project.build.finalName}.jar</include>
? </resource>
? </resources>
? </configuration>
? </plugin>
? </plugins>
?</build>
四、創(chuàng)建Dockerfile文件
在src/main/docker目錄下創(chuàng)建Dockerfile文件
FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
- FROM 表示要構(gòu)建的鏡像基于哪個鏡像,java:8表示使用jdk8環(huán)境為基礎(chǔ)鏡像
- EXPOSE 告訴Docker這個容器在運(yùn)行時會監(jiān)聽哪些端口。
- VOLUME 指向了一個
/tmp的目錄,由于 Spring Boot 使用內(nèi)置的Tomcat容器,Tomcat 默認(rèn)使用/tmp作為工作目錄。這個命令的效果是:在宿主機(jī)的/var/lib/docker目錄下創(chuàng)建一個臨時文件并把它鏈接到容器中的/tmp目錄 - ADD 表示把文件拷入docker ,并改名成 app.jar
- ENTRYPOINT 表示使用指定命令在鏡像運(yùn)行時執(zhí)行,啟動jar。
五、構(gòu)建鏡像
-
測試打的jar是否正常
在 Terminal終端進(jìn)入項(xiàng)目路徑,輸入如下命令:
mvn package啟動項(xiàng)目
java -jar demo-0.0.1-SNAPSHOT.jar
看到 Spring Boot 的啟動日志后,在瀏覽器訪問http://localhost:8080/,在頁面看到打印
HelloWorld
表明環(huán)境配置沒有問題。
-
構(gòu)建鏡像
使用Dockerfileg構(gòu)建鏡像,進(jìn)入項(xiàng)目目錄執(zhí)行如下命令:
mvn package docker:build第一次會啟動慢一些,如果看到如下信息說明構(gòu)建鏡像成功:
圖3 -
使用
docker images命令查看構(gòu)建好鏡像
圖4六、運(yùn)行鏡像
- 運(yùn)行鏡像
springboot/demo是我們構(gòu)建好的鏡像,運(yùn)行鏡像命令:
docker run -p 8080:8080 -t springboot/demo
- 查看正在運(yùn)行鏡像
使用docker ps 查看正在運(yùn)行的鏡像:

可以看到我們構(gòu)建的容器正在運(yùn)行,使用瀏覽器訪問:http://localhost:8080/,返回:
Hello World
-
停止鏡像
使用docker stop CONTAINER ID停止鏡像,上圖所示CONTAINER ID是:6d2f2ddf460c,所以停止鏡像命令:docker stop 6d2f2ddf460c
?
使用docker部署Spring Boot項(xiàng)目是比較簡單。如果哪里寫得不合理,請指正哦。

