spring boot 开发轻巧的微服务提供了便利,docker 的发展又极大的方便了微服务的部署。这篇文章介绍一下如果借助 maven 来快速的生成微服务的镜像以及快速启动服务。
其实将 spring boot 项目用 docker 部署也不是什么多么神秘的技术,也要先生成镜像,再用镜像启动容器,如果说有什么方便的地方,也就是一些工具可以帮助我们节省手动操作的过程。
知识背景:
掌握 docker 的安装以及基本的操作,熟悉 dockerfile 文件创建镜像的方法。
创建 spring boot 项目
1、添加 application.yml 配置文件
|
1
2
3
4
5
|
server:
port: 7000
spring:
application:
name: spring-boot-docker-sample
|
2、创建项目启动文件
|
1
2
3
4
5
6
7
|
@springbootapplication
public class application {
public static void main(string[] args){
springapplication.run(application.class, args);
}
}
|
3、添加一个 restcontroller 用于服务是否正常可用
|
1
2
3
4
5
6
7
8
|
@restcontroller
public class dockercontroller {
@getmapping(value = "hello")
public object sayhello(){
return "hello! spring boot with docker.";
}
}
|
之后启动服务,访问 localhost:7000/hello 查看,如果正常访问,则进入下一步操作。
利用 maven 插件生成镜像文件
我们这里用到的 maven 插件是 dockerfile-maven-plugin 。
1、在 pom 文件中添加上述插件依赖
|
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
|
<plugin>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-maven-plugin</artifactid>
</plugin>
<plugin>
<groupid>com.spotify</groupid>
<artifactid>dockerfile-maven-plugin</artifactid>
<version>1.4.9</version>
<executions>
<execution>
<id>tag-latest</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
<goal>push</goal>
</goals>
<configuration>
<tag>latest</tag>
</configuration>
</execution>
<execution>
<id>tag-version</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
<goal>push</goal>
</goals>
<configuration>
<tag>${project.version}</tag>
</configuration>
</execution>
</executions>
</plugin>
|
2、这个 maven 插件是依赖于 dockerfile 文件的,所以使用命令之前需要先手动创建 dockerfile 文件,注意这个 dockerfile 文件要和 pom.xml 文件同级,简单的 dockerfile 内容如下:
|
1
2
3
4
|
from openjdk:8-jdk-alpine
volume /tmp
copy target/docker-sample-1.0-snapshot.jar app.jar
entrypoint ["java","-jar","/app.jar"]
|
简单解释一下:
- 先从中央仓库或者你配置的代理仓库(如阿里云镜像仓库)拉取 openjdk 镜像;
- 然后设置一个挂载点;
- 拷贝 target 目录下的 spring boot 项目运行包,并改名为 app.jar;
- 设置启动命令 java -jar app.jar
3、然后使用命令 sudo mvn package dockerfile:build 就可以生成镜像到本地仓库了,生成后的镜像如下:
这一步翻译为 docker 命令的话就是下面两条:
|
1
2
|
docker build -t registry.cn-beijing.aliyuncs.com/fengzheng/kite:1.0-snapshot .
docker build -t registry.cn-beijing.aliyuncs.com/fengzheng/kite:latest
|
4、之后根据生成的镜像,就可以以 docker 方式启动服务了
|
1
|
docker run -d -p 7000:7000 registry.cn-beijing.aliyuncs.com/fengzheng/kite:latest
|
将镜像推送到阿里云 docker 仓库
访问https://dev.aliyun.com/search.html,然后随意输入一个镜像名称,例如 redis,如果你没有注册过,阿里云便会调到登录注册页,之后按照提示注册即可。
注册成功后,到镜像管理界面,会提示你输入镜像仓库服务的密码,也就是下方配置文件中的 registry登录密码。
注册成功后,设置一个命名空间,并在命名空间下新建一个仓库。例如本例中我设置的命名空间是 fengzheng ,仓库名称为 kite 。
之后,在 pom.xml 文件中 plugin 节点增加如下配置:
|
1
2
3
4
5
6
7
8
9
10
11
|
<configuration>
<username>阿里云账号名</username>
<!--在容器镜像服务控制台"设置registry登录密码"-->
<password>registry登录密码</password>
<!--registry.cn-hangzhou.aliyuncs.com/namespace/repositoryname-->
<repository>registry.cn-beijing.aliyuncs.com/fengzheng/kite</repository>
<tag>latest</tag>
<buildargs>
<jar_file>${project.build.finalname}.jar</jar_file>
</buildargs>
</configuration>
|
设置好用户名和密码,仓库地址等参数,因为是私有仓库,所以需要用户名和密码。
然后运行命令,将以 latest 和 ${project.version} 为 tag 的镜像推送到阿里云镜像仓库。
|
1
|
sudo mvn dockerfile:push
|
或者,运行命令,发布某一个指定 tag 的镜像。
|
1
|
sudo mvn dockerfile:push@tag-version
|
或
|
1
|
sudo mvn dockerfile:push@tag-latest
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:http://www.cnblogs.com/fengzheng/p/10329097.html
相关文章
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 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-26 102
-
2025-05-25 81
-
2025-06-04 70
-
2025-05-27 27
-
2025-06-04 51


