Docker这项容器技术已经是十分的火热了,读者要是不了解docker的话可以吧docker先理解为虚拟机。
我们的Springboot最终是要部署在Linux上的,docker作为Linux轻量级的实现。docker也是可以用来部署Springboot应用的。
Springboot程序本人以Spring官网的demo为例。
地址是: https://spring.io/guides/gs/spring-boot-docker/
当然读者也可以直接git clone https://spring.io/guides/gs/spring-boot-docker/
首先我们进入demo的complete 目录
下运行命令,mvn package && java -jar target/gs-spring-boot-docker-0.1.0.jar
这个命令是将demo打包并且运行。在浏览器输入localhost:8080就可以访问项目里,此时的Springboot应用是部署在自己的操作系统上的。
我们按下Ctrl+C关闭掉Spring boot应用程序。
接下来我们来到src/main/docker目录下,有个关键性的配置文件Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.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" ]
这个文件是用来生成docker镜像的
打开我们的maven的pom.xml文件,里面有一个插件
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</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>
运行命令
$ mvn package docker:build
最后运行命令
docker run -p 8080:8080 -t springio/gs-spring-boot-docker
再在浏览器中输入localhost:8080即可访问在docker容器中运行的Spring boot应用
最后对外发布app的时候docker可以自动化发布到任何一台流行的Linux服务器上