spring boot2.0部署docker简单教程linux部署

docker容器化逐渐流行,加上已经流行的spring boot2.0。那么两者如何结合一起呢?

首先为了偷懒,直接从https://start.spring.io/上面拉去一个spring boot2.0项目

spring boot2.0部署docker简单教程linux部署

 可以看到, 官网的spring boot 版本 已经到了2.0.6.生成后,download下来导入我们的ide中。

然后,我们写一个简单的requestMapping

spring boot2.0部署docker简单教程linux部署

返回 “Hello Docker World”!写这个为了验证该项目部署到docker后 是否正常

 接着在application.propertise或者application,yml中修改端口号为8090。因为8080实在用的太多啦!

重点来了 。在pom.xml中添加

<docker.image.prefix>hellospringbootdocker</docker.image.prefix>
<plugin>
   <groupId>com.spotify</groupId>
   <artifactId>dockerfile-maven-plugin</artifactId>
   <version>1.3.6</version>
   <configuration>
      <repository>${docker.image.prefix}/${project.artifactId}</repository>
   </configuration>
</plugin>

以及

<pluginManagement>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
            <execution>
               <id>unpack</id>
               <phase>package</phase>
               <goals>
                  <goal>unpack</goal>
               </goals>
               <configuration>
                  <artifactItems>
                     <artifactItem>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                     </artifactItem>
                  </artifactItems>
               </configuration>
            </execution>
         </executions>
      </plugin>
   </plugins>
</pluginManagement>

 

上面那段maven中的配置是参考了官网中的说明:To ensure the jar is unpacked before the docker image is created we add some configuration for the dependency plugin。机翻就是:为确保在创建docker镜像之前解压缩jar,我们为依赖项插件添加一些配置。

然后是Dockerfile,该文件可以新建一个File,然后修改名字,并放到项目的根目录底下。内容是

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/hello-springboot-docker-0.1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 

hello-springboot-docker-0.1.0.jar就是我们的项目。这个项目JAR文件作为“app.jar”添加到容器中,然后在ENTRYPOINT中执行。

 

这里添加了一个指向“/ tmp”的VOLUME,因为这是Spring Boot应用程序默认为Tomcat创建工作目录的地方。效果是在服务器“/ var / lib / docker”下创建一个临时文件,并将其链接到“/ tmp”下的容器。

先来验证下项目是否正常,进入项目的目录。输入命令

./mvnw package && java -jar target/hello-springboot-docker-0.1.0.jar

如果输入localhost:8090输出了“Hello Docker World”!。那么可以继续。并且这个jar已经生成了

然后输入命令./mvnw install dockerfile:build。如果出现builde success那么就成功啦!

spring boot2.0部署docker简单教程linux部署

然后用docker images看镜像是否存在。存在则

docker run -p 8090:8090 -t  hellospringbootdocker/hello-springboot-docker 运行该镜像。验证下看看!!