在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用(二)

简介: 本文为Spring Cloud与阿里云容器服务系列文章的第二篇,讨论了如何将示例代码一键部署到阿里云容器服务上。为了比较全面地展示高可用和负载均衡的能力,这里也会演示如何创建虚拟专有网和负载均衡。

部署Spring Cloud应用示例

本文为Spring Cloud与阿里云容器服务系列文章的第二篇,讨论了如何将示例代码一键部署到阿里云容器服务上。为了比较全面地展示高可用和负载均衡的能力,这里也会演示如何创建虚拟专有网和负载均衡。

一、在阿里云容器服务上开发Spring Cloud微服务应用

二、部署Spring Cloud应用示例(本文)

三、服务发现

四、服务间通信与集成

五、服务智能路由

六、集中配置管理

七、高可用和容错

八、监控和日志

九、服务的部署和发布策略

准备工作:创建VPC网络

本步准备工作是可选的,但基于安全性和网络效率的考虑,强烈建议用户使用VPC网络,原因是支持经典网络的Overlay的网络带宽损耗很大,而基于VPC的网络可以做到基本无损。

专有网络VPC控制台中选择华东1地域,点击创建专有网按钮。
vpc01

进入创建专有网页面,填写专有网名称字段,例如vpc-springcloud,点击确定按钮创建VPC。
vpc02

在创建成功页面点击管理交换机

vpc03

在管理交换机页面创建一个交换机,命名为vs1,配置网段。

vpc04

准备工作:创建负载均衡

本步准备工作是可选的,可以在创建集群后,创建应用之前完成,如果只是用于非生产环境的尝试,也可以用容器服务在创建集群是自动配置的SLB来做,这里就不演示了。

进入负载均衡控制台创建负载均衡,选择华东1区,其他设置保持不变,点击立即购买按钮,支付后静候短信通知。

slb_01

负载均衡创建成功后回到控制台,点击端口/健康检查一栏里的配置链接。
slb_02

在监听和服务器配置页面,创建一个监听:前端HTTP 8080端口,后台8080端口。

slb_03

点击下一步进入健康检查配置页面,将检查路径设置为/acs
slb_04

第一步:创建集群

进入容器服务控制台,创建集群,将集群命名为springcloud-demo,选择华东1区,专有网络:选择专有网和交换机,。

acs01

示例规格为2节点 2核4G或以上,设置口令,点击创建集群按钮。
acs02

注意:开通的集群规格一定要有2个节点,原因是2个gateway容器,每个容器都会映射
到同一个主机端口,如果只有1个节点会导致只有一个gateway能够启动成功。另外,每个
节点的配置最好在2核4G以上,否则会出现因为内存不足造成Java应用启动失败,或启动
时间过长。

第二步:部署应用

进入容器服务控制台-应用,选择集群springcloud-demo,点击创建应用按钮,进入创建应用页面。

应用名称定为springcloud-demo,点击使用编排模版创建按钮。
create_app01

拷贝docker-compose.yml内容,粘贴
进入模版编辑器。注意其中的${slbname}将来会替换为前面创建的负载均衡名字或ID。

create_app02

点击创建并部署按钮,在对话框中输入负载均衡ID,确认后创建应用。
create_app03

动态管理应用

容器服务控制台-应用中,点击springcloud-demo应用中的discovery1服务的页面中,我们可以看到服务的访问端点:

create_app04

点击访问端点,进入Eureka页面,在这个页面中可以看到所有注册到Eureka的服务的状态。其中foo服务的实例数目为1。

create_app05

我们尝试将foo服务的数目从1增加到2,点击变更配置链接:

create_app06

进入服务的配置更改页面,将容器数量从1改为2。

create_app07

服务更新完成后回到Eureka页面,可以看到其中foo服务的示例数已经由1变成2了。

create_app08

编译及在开发环境中运行应用

我们已经了解了如何把创建好的镜像部署到阿里云容器服务上。如果更改了代码,如何构建镜像呢,如何在本地开发环境中运行应用呢?

编译运行及构建镜像

为所有服务都构建镜像

./build-all.sh

运行前需要修改脚本中的REGPREFIX变量。

镜像全部上传到容器Hub

./push-all-images.sh

运行前需要修改脚本中的REGPREFIX变量,并Docker登录。

单独构建服务

cd {service directory}
./gradlew build

本地运行容器应用

在项目根目录下运行如下命令即可启动本地测试环境。

docker-compose up -d

小节

本文演示了如何在本地开发环境中编译并运行Spring Cloud应用,以及如何将Spring Cloud应用部署到阿里云容器服务上。随后文章会详细介绍Spring Cloud应用容器化的细节。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
8月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
2240 10
|
7月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
7月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
698 2
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
322 18
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
789 2
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
XML Java 数据格式
Spring容器的本质
本文主要讨论Spring容器最核心的机制,用最少的代码讲清楚Spring容器的本质。
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
901 24
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版