使用Docker部署Spring Boot的方法示例
这里主要用到spring-boot开箱即用,能生成一个独立运行的程序,及maven的插件
这里主要步骤
- 构建一个简单的springboot项目
- 添加docker-maven-plugin及写dockerfile
- 实践生成 docker镜像
一个简单 spring boot 项目
以spring boot 2.0 为例
在pom.xml文件中增加parament依赖
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.0.0.release</version> </parent>
增加web和测试依赖
<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>
创建一个 controller,在其中有一个index()方法,访问时返回:hello docker!
@restcontroller public class controller { @requestmapping("/") public string index() { return "hello docker!"; } }
启动类
@springbootapplication public class application { public static void main(string[] args) { springapplication.run(application.class, args); } }
添加完毕后启动项目,启动成功后浏览器放问:http://localhost:8080/,页面返回:hello docker!,说明 spring boot 项目配置正常。
添加dcoker-maven-plugin
在pom.xml的properties节点中添加docker镜像前缀
<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>
在plugins中添加docker构建插件
<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}</imagename> <dockerdirectory>src/main/docker</dockerdirectory> <resources> <resource> <targetpath>/</targetpath> <directory>${project.build.directory}</directory> <include>${project.build.finalnmae}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
编写dockerfile
在目录src/main/docker下创建 dockerfile 文件,dockerfile 文件用来说明如何来构建镜像。
from openjdk:8-jdk-alpine volume /tmp add spring-boot-docker-1.0.jar app.jar entrypoint ["java","-djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] expose 8080
这个 dockerfile 文件很简单,构建 jdk 基础环境,添加 spring boot jar 到镜像中,简单的说明一下:
- from ,表示使用 jdk8 环境 为基础镜像,如果镜像不是本地的会从 dockerhub 进行下载
- volume ,volume 指向了一个/tmp的目录,由于 spring boot 使用内置的tomcat容器,tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
- add ,拷贝文件并且重命名
- entrypoint ,为了缩短 tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 entrypoint
- expose 指明8080端口提供服务
生成docekr镜像
需要有一个 docker 环境来打包 spring boot 项目。
需要三个依赖
- jdk环境
- maven
- docker环境
运行java -version,mvn -version,docker version
这些命令不报错就是环境准备好了。
进入项目目录
mvn package -dmavne.test.skip=true java -jar target/spring-boot-docker-1.0.jar
能正常运行,说明jar包没问题。
然后构建镜像
mvn docker:build
显示build success就成功。
使用docker images来查看构建好的镜像
运行镜像
docker run -p 8080:8080 -t springboot/spring-boot-docker
然后curl http://127.0.0.1:8080可以看到返回hello docker!,说明成功
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: C#实现状态栏提示信息功能的示例
推荐阅读
-
spring boot使用thymeleaf模板的方法详解
-
详解Spring Boot中MyBatis的使用方法
-
Spring Boot 配置 IDEA和DevTools 热部署的方法
-
使用Docker部署 spring-boot maven应用的方法
-
如何使用Spring Security手动验证用户的方法示例
-
Spring Boot中使用RabbitMQ的示例代码
-
Spring Boot中使用LDAP来统一管理用户信息的示例
-
Spring Boot使用AOP防止重复提交的方法示例
-
在Spring Boot中使用swagger-bootstrap-ui的方法
-
Spring AOP中使用args表达式的方法示例