Springboot(十二)構建docker images映象
阿新 • • 發佈:2018-12-26
前言:
把springboot工程,放在docker容器中執行,有很多種方法,本部落格用maven外掛與Dockerfile構建。
程式碼:
首先構架一個springboot工程
pom.xml如下:docker-maven-plugin為構建docker所需的maven外掛
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xhx.springboot</groupId> <artifactId>springboot19</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot19</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <docker.image.prefix>xuhaixing</docker.image.prefix> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <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}:${project.version}</imageName> <dockerHost>http://192.168.94.151:2375</dockerHost> <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> </project>
imageName:為生成的映象名字,:後面為tag
dockerHost:為docker主機地址,docker需要開啟tcp訪問
dockerDirectory:為Dockerfile的路徑地址
resource中把最終工程的jar包包含進來
Dockerfile如下:
FROM docker.io/java
VOLUME /tmp
ADD springboot19-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Controller方法:
啟動類:package com.xhx.springboot.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * xuhaixing * 2018/5/20 22:47 */ @RestController @RequestMapping(value = "test") public class HelloController { @RequestMapping(value = "hello") public String helloWorld(){ return "hello world"; } }
package com.xhx.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; //mvn package docker:build -e @SpringBootApplication public class Springboot19Application { public static void main(String[] args) { SpringApplication.run(Springboot19Application.class, args); } }
spring的配置檔案是空的,我什麼都沒配置。
構成的結構如下:
執行mvn package docker:build就行了
控制檯會打印出下面資訊:
docker容器中映象:
啟動:
檢視日誌:
訪問
證明成功了。