1. docker 简介
docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。docker image 是用于运行容器化进程的方案,在本文中,我们将构建一个简单的 spring boot 应用程序。
2.环境搭建
	jdk 1.8+
	maven 3.0+
docker 最新版。
3.用 maven 构建项目
3.1 创建目录结构
| 
								1
						 | mkdir -p src/main/java/com/lidong/demo | 
在linux或者mac系统中。
3.2 创建 pom.xml 文件
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
 
								16
 
								17
 
								18
 
								19
 
								20
 
								21
 
								22
 
								23
 
								24
 
								25
 
								26
 
								27
 
								28
 
								29
 
								30
 
								31
 
								32
 
								33
 
								34
 
								35
 
								36
 
								37
 
								38
 
								39
 
								40
 
								41
 
								42
 
								43
 
								44
 
								45
 
								46
 
								47
 
								48
 
								49
 
								50
 
								51
 
								52
 
								53
 
								54
 
								55
 
								56
 
								57
 
								58
 
								59
 
								60
						 | <?xml version="1.0"encoding="utf-8"?><project xmlns="http://maven.apache.org/pom/4.0.0"xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelversion>4.0.0</modelversion><groupid>com.lidong.demo</groupid><artifactid>lidong-spring-boot-demo</artifactid><version>1.0-snapshot</version><parent><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-parent</artifactid><version>1.5.1.release</version><relativepath/></parent><properties><project.build.sourceencoding>utf-8</project.build.sourceencoding><project.reporting.outputencoding>utf-8</project.reporting.outputencoding><java.version>1.8</java.version><docker.image.prefix>springio</docker.image.prefix></properties><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><dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-thymeleaf</artifactid></dependency></dependencies><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>0.4.13</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></build></project> | 
注意:
spring boot maven plugin 提供了很多方便的功能:
1)它收集的类路径上所有 jar 文件,并构建成一个单一的、可运行的jar,这使得它更方便地执行和传输服务。
2)它搜索的 public static void main() 方法来标记为可运行的类。
3)它提供了一个内置的依赖解析器,用于设置版本号以匹配 spring boot 的依赖。您可以覆盖任何你想要的版本,但它会默认
选择的 boot 的版本集。
spotify 的 docker-maven-plugin 插件是用于构建 maven 的 docker image
1)imagename指定了镜像的名字,本例为 springio/lidong-spring-boot-demo
2)dockerdirectory指定 dockerfile 的位置
3)resources是指那些需要和 dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。
4.编写 第一个spring boot 应用
编写一个简单的 spring boot 应用 :
src/main/java/com/lidong/demo/samplecontroller.java:
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
 
								16
 
								17
 
								18
 
								19
 
								20
 
								21
 
								22
 
								23
 
								24
 
								25
 
								26
 
								27
 
								28
						 | packagecom.lidong.demo;importorg.springframework.boot.springapplication;importorg.springframework.boot.autoconfigure.springbootapplication;importorg.springframework.stereotype.controller;importorg.springframework.web.bind.annotation.requestmapping;importorg.springframework.web.bind.annotation.responsebody;/*** @项目名称:lidong-dubbo* @类名:samplecontroller* @类的描述:* @作者:lidong* @创建时间:2017/2/19 上午9:34* @公司:chni* @qq:1561281670* @邮箱:lidong1665@163.com*/@controller@springbootapplicationpublicclasssamplecontroller {@responsebody@requestmapping(value = "/")string home(){return"hello docker world";}publicstaticvoidmain(string[] args) {springapplication.run(samplecontroller.class,"--server.port=8081");}} | 
	类用 @springbootapplication @restcontroller 标识,可用 spring mvc 来处理 web 请求。
	@requestmapping 将 / 映射到 home() ,并将”hello docker world” 文本作为响应。
	main() 方法使用 spring boot 的 springapplication.run() 方法来启动应用。
5.运行程序
5.1使用maven命令
mvn package
运行:
| 
								1
						 | java -jar target/lidong-spring-boot-demo-1.0-snapshot.jar | 
访问项目
如果程序正确运行,浏览器访问 http://localhost:8081/,可以看到页面 “hello docker world.” 字样。
5.2 使用idea 插件
6.将项目容器化
docker 使用 dockerfile 文件格式来指定 image 层,
创建文件 src/main/docker/dockerfile:
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
						 | from frolvlad/alpine-oraclejdk8:slimvolume /tmpadd lidong-spring-boot-demo-1.0-snapshot.jar app.jarrun sh -c 'touch /app.jar'env java_opts=""entrypoint [ "sh", "-c", "java $java_opts -djava.security.egd=file:/dev/./urandom -jar /app.jar"] | 
解释下这个配置文件:
volume 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 docker 数据文件夹,因为 spring boot 使用的内嵌 tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 “app.jar” 添加到容器的
entrypoint 执行项目 app.jar。为了缩短 tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 entropy source
构建 docker image
执行构建成为 docker image:
| 
								1
						 | mvn packagedocker:build | 
运行
运行 docker image
| 
								1
						 | docker run -p 8081:8081-t springio/lidong-spring-boot-demo | 
看到这个spring的图标。就以为这我们在docker 上发布spring boot 程序已经完成。
接下来去访问在浏览器访问 http://localhost:8081/,可以看到页面 “hello docker world.” 字样。
总结
以上所述是小编给大家介绍的spring boot 应用通过docker 来实现构建、运行、发布流程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!
原文链接:http://blog.csdn.net/u010046908/article/details/56008445
相关文章
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
- 
            2025-05-25 66
- 
            2025-05-27 75
- 
            2025-05-26 47
- 
            2025-05-29 78
- 
            2025-06-04 57
 
        



 
    		 
            	 
															 
         
         
        
 
                         
                         
                        