Spring Boot和Docker实现微服务部署的方法

2025-05-29 0 63

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 就可以生成镜像到本地仓库了,生成后的镜像如下:

Spring Boot和Docker实现微服务部署的方法

这一步翻译为 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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring Boot和Docker实现微服务部署的方法 https://www.kuaiidc.com/109774.html

相关文章

发表评论
暂无评论