1.1 建立SpringBoot的Web專案
l 建立SpringBoot專案
l 選擇專案依賴項
l 建立HelloController,新增index方法,返回字串:Hello Docker!
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Hello Docker!";
}
}
l 設定application.properties
#設定應用名
spring.application.name=Bootstrap Spring Boot
#設定啟動埠
server.port=9090
#熱部署生效
spring.devtools.restart.enabled: true
1.2 Web專案新增Docker支援
1.2.1 新增Docker外掛
l pom.xml檔案新增相關屬性
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<docker.image.prefix>springboot</docker.image.prefix>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>
l pom.xml中新增Docker外掛
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>${maven.build.timestamp}</imageTag>
</imageTags>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<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>
1.2.2 新增Dockerfile檔案
在專案路徑(src/main/docker)下新增dockerfile檔案,檔案內容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD SpringBootInDocker-1.0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
1.3 將專案部署至Docker
1.3.1 檢測環境
檢視Linux系統是否安裝Docker、Java、Maven等環境
1.3.2 測試專案
l 打包Java專案
mvn pacakge
打包結果如下:
l 測試專案是否正常執行
java -jar target/SpringBootInDocker-1.0.0.1-SNAPSHOT.jar
執行結果如下:
l 訪問專案:curl http://192.168.56.99:9090
1.3.3 生成Docker映象
mvn package docker:build
檢視結果如下:
1.3.4 執行Docker映象
docker run -p 9090:9090 -t springboot/springbootindocker
1.3.5 測試Docker專案
curl http://192.168.56.99:9090
1.4 相關問題
1.4.1 mvn docker:build fails with "{}->unix://localhost:80: Connection reset by peer
相關問題:https://github.com/spotify/docker-maven-plugin/issues/357
原因:docker映象名稱不支援大寫字母
解決方案:pom.xml檔案中的imageName修改成小寫字母,即project.artifactId改為小寫
1.4.2 other
1.5 相關資料
l 官方資料:https://spring.io/guides/gs/spring-boot-docker/