前言
Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情。当前,前提是得有Docker的基础。
构建一个SpringBoot项目
本人最早的一篇文章,就是教大家如何使用Spring Initialise工具,快速的创建一个SpringBoot项目,如果还不懂的,可以翻一下本人的第一篇文章,这里就不多讲了。下面贴一下主要的文件内容:
pom文件的大部分内容这里就不贴了,主要贴关键的内容,主要的就是maven-docker的打包插件:
<!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</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> <!-- Docker maven plugin -->
dockerDirectory配置了Dockerfile的路径为:src/main/docker,所以,我们需要在src/main目录下,创建docker目录,然后创建Dockerfile文件。整体的目录结构如下:
Dockerfile
Dockerfile文件内容如下:
FROM openjdk VOLUME /tmp ADD springboot-docker-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"]
到这里,已经完成了SpringBoot+Docker的配置了,接下来就是打包部署了。
添加测试接口
为了方便测试,可以添加一个GET请求的接口,如下:
@SpringBootApplication @RestController public class SpringbootDockerApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDockerApplication.class, args); } @GetMapping(value = "/test") public Object test() { return "Hello SpringBoot with Docker!"; } }
maven打包
使用maven构建Dockerfile的命令如下:(先把maven和Docker都设置为国内的源,否则需要build比较长的时间)
mvn package docker:build
在springboot-docker目录根路径下执行此命令即可。
需要本地安装了Docker才能够打包成功,否则会报错。关于Docker的安装,Linux的用户可以根据我之前的文章进行安装,其他系统的用户可以自行搜索安装即可。推荐使用Linux。
比如本人,Docker是安装在Linux虚拟机上的,直接把springboot-docker目录拷贝到Linux机器上:
执行打包命令,输入如下:
看到BUILD SUCCESS即表示构建成功了,这时候就可以通过docker images命令,查看我们构建的镜像了:
镜像构建完之后,我们还可以把它推到Docker的仓库上。这里就不展开来讲了。
使用该镜像创建容器
命令如下:
docker run -it -d --name springboot -p 8080:8080 happy/springboot-docker
这里创建并且启动一个容器,命名为springboot,映射端口为8080:8080
可以通过如下命令查看启动日志:
docker logs springboot