前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务SpringCloud项目docker容器化部署

微服务SpringCloud项目docker容器化部署

作者头像
肓己
发布2021-08-12 11:03:28
3.1K0
发布2021-08-12 11:03:28
举报
文章被收录于专栏:linux commands

前言

近期接到领导通知,要对公司应用进行后台架构进行调整,把java应用从原先的java -jar **.jar启动方式,改成全部以docker容器的方式运行,这篇文章,是笔者在对java应用容器化的过程做的记录。

应用是采用微服务SpringCloud框架,在对所有模块进行容器化的过程中也要注意固定IP,映射相关目录、容器时间等问题,再下面的内容中,笔者也有相关介绍也解决。

Docker的安装这里不再赘述。

步骤

1、构建JDK基础镜像

第一步是为应用制作一个基础镜像。

官方提供的java8镜像大小为643M,生成服务的镜像体积就达到700M+,所以这里笔者以alpine镜像为基础自定义了一个jdk8版本的镜像,只有128M

已经对镜像的时间、环境编码做了处理,笔者已将镜像上传到DockerHub,可以使用pull命令下载:

代码语言:javascript
复制
$ docker pull hlwojiv/alpine-jdk8

如还需对此镜像进一步自定义,也可以下载笔者的Dockerfile文件(里面有个压缩包有点大,clone的时候等一会就好):

代码语言:javascript
复制
$ git clone https://github.com/hlwojiv/alpine-jdk8.git

2、修改pom.xml文件

修改项目中的pom.xml文件,配置插件内容,在 标签内添加以下内容:

代码语言:javascript
复制
<plugin>
	<groupId>com.spotifygroupId>
	<artifactId>docker-maven-pluginartifactId>
	<version>0.4.13version>
	<configuration>
		<imageName>hub.examlpe.com/example/${project.artifactId}:latestimageName>
 		<forceTags>trueforceTags>
		<baseImage>hlwojiv/alpine-jdk8baseImage>
		<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]entryPoint>
        <resources>
        	<resource>
        		<targetPath>/targetPath>
        		<directory>${project.build.directory}directory>
        		<include>${project.build.finalName}.jarinclude>
        	resource>
        resources>
	configuration>
plugin>

你需要改的是中的$符号前的内容,顾名思义,这个标签定义了生成的镜像的名称。

3、生成应用镜像

配置完之后执行mvn命令生成镜像,在这个过程中docker服务要在运行状态:

代码语言:javascript
复制
$ mvn clean package docker:build

构建成功会看到这个结果:

执行docker images,能看到构建成功的镜像:

4、运行镜像

在运行镜像前,要考虑微服务应用的配置,也就是所有模块应用的配置中,eureka的IP地址,这也就是限定所有服务的IP地址是固定的。

启动Docker容器的时候,使用默认的网络是不支持指定固定IP,所以笔者在这里创建了一个自定义网络:

代码语言:javascript
复制
$ docker network create --subnet=172.18.0.0/16 example

启动容器并指定固定IP:

代码语言:javascript
复制
$ docker run -p 2003:2003 --name order -v /data/logs:/data/logs --network example --ip 172.18.0.13 -d hub.example.com/example/order

至此,一个java应用模块的容器化就完成了,当然微服务中存在多个应用模块,重复上面的步骤启动即可,下图是我将全部模块启动后:

5、测试可用性

由于2000端口已经映射给宿主机,可以访问宿主机的2000端口查看服务是否注册:

可以看到服务都被注册上了,对应的IP地址也是容器的地址。

总结

微服务容器化的主要为:制作jdk镜像、修改应用pom.xml文件、生成服务镜像、运行服务镜像这几个步骤,在运行镜像的时候要注意应用的IP需要固定,以及映射应用所用到的目录等问题。

到这篇文章发布时,该架构已在测试环境稳定地运行了两周,对前端的调用请求也没有出现什么问题,后期也会将生产的微服务换成容器化的结构。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 步骤
    • 1、构建JDK基础镜像
      • 2、修改pom.xml文件
        • 3、生成应用镜像
          • 4、运行镜像
            • 5、测试可用性
            • 总结
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档