Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker image 是用于运行容器化进程的方案,在本文中,我们将构建一个简单的 Spring Boot 应用程序。
首先新建一个简单的项目,只包含一个web组件,如下:
![](https://img.haomeiwen.com/i3673891/1e25211ad50e28c3.png)
在项目中新建一个简单的接口,如下:
![](https://img.haomeiwen.com/i3673891/2112fc7ffdef1bd3.png)
启动项目,测试接口访问:
![](https://img.haomeiwen.com/i3673891/92b250ba0e09f8ba.png)
上面一个简单的项目和接口完成了。接下来配置和docker有关的内容。首先配置一个pom里面的插件:
![](https://img.haomeiwen.com/i3673891/d16c9ca6da060450.png)
Spotify 的 docker-maven-plugin 插件是用于构建 Maven 的 Docker Image
1)imageName指定了镜像的名字,本例为 springboot/15-spring-docker
2)dockerDirectory指定 Dockerfile 的位置
3)resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。
接下来创建文件 src/main/docker/Dockerfile:
![](https://img.haomeiwen.com/i3673891/3cd0554da93df596.png)
FROM指令指明了当前镜像继承的基镜像,编译当前镜像时会自动下载基镜像。
MAINTAINER 指令指明了当前镜像的作者。
ADD指令是从当前工作目录复制文件到镜像目录中去。
EXPOSE指令指明了镜像运行时的容器必须监听指定的端口。
ENTRYPOINT指令可让容器像一个可执行程序一样运行,这样镜像运行时可以像软件一样接收参数。
接下来在项目根目录下执行命令:
mvn package docker:build
注意:执行上面的环境需要有maven和docker的安装环境,建议可以把代码拉到linux上面直接执行命令:
![](https://img.haomeiwen.com/i3673891/c6440ddd4a94a6bd.png)
![](https://img.haomeiwen.com/i3673891/569952744bc83450.png)
接下来,在docker环境下查看镜像列表,发现镜像已经成功创建:
![](https://img.haomeiwen.com/i3673891/b48350376c0bc397.png)
最后创建一个容器,测试镜像是否成功:
docker run -dit -p 8015:8015 springboot/15-spring-docker
运行 docker logs 命令,查看容器启动日志,
![](https://img.haomeiwen.com/i3673891/2739c73ef5a6bbe9.png)
可以看到,启动成功。
访问服务器映射的端口:
![](https://img.haomeiwen.com/i3673891/bd536512cd8c15ec.png)
可以看到容器用docker部署成功!
代码地址: https://gitee.com/blueses/spring-boot-demo
网友评论