Python应用容器化(二)----使用阿里云容器服务部署应用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 我们曾经在Python程序容器化(一)中介绍了如何将一个克隆版Twitter程序(retwit-py)容器化,并使用docker-compose运行于宿主机上。对于经典的Web程序,处理前端请求的Web服务通常都是可扩展伸缩的。生产环境中,随着访问量的不断增长,需要部署多个Web服务实例,并通过负载

前言

我们曾经在[Python程序容器化(一)]中介绍了如何将一个克隆版Twitter程序(retwit-py)容器化,并使用docker-compose运行于宿主机上。对于经典的Web程序,处理前端请求的Web服务通常都是可扩展伸缩的。生产环境中,随着访问量的不断增长,需要部署多个Web服务实例,并通过负载均衡统一对外进行服务。本文将会介绍如何使用阿里云容器服务将retwit-py改造为贴近生产环境的系统并部署。

阿里云容器服务

容器服务是一项高性能可扩展的容器管理服务,支持在一组阿里云云服务器上通过 Docker容器来部署或编排应用。用户不再需要安装、运维、扩展自己的集群管理基础设施,而是可以直接通过阿里云控制台图形化界面或API进行容器操作和生命周期管理。容器服务整合了阿里云负载均衡SLB、专有网络 VPC等云产品,为云应用部署与运维场景提供丰富的一站式功能支持。

服务改造

我们计划部署3个Web服务实例和1个DB服务实例,为了提高整体服务的可靠性,我们首先建立一个包含了3台虚拟机的集群python-demo。

准备镜像

在[上篇文章]中,我们通过Dockerfile构建了retwis-py的镜像,使用docker命令查看镜像列表:

    $ docker images
    REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE
    retwis-py                                    latest              eba6c2652c0a        2 hours ago         682.7 MB
    redis                                        3.0                 9afdbcd3766e        3 days ago          151.3 MB
    registry.aliyuncs.com/acs/routing            0.5                 40cd035735ea        5 days ago          217.8 MB
    registry.aliyuncs.com/acs/agent              0.5-477bce1         32247750d584        5 days ago          27.39 MB
    registry.aliyuncs.com/acs-sample/python      2.7                 0e45459a5626        13 days ago         675.7 MB
    registry.aliyuncs.com/acs/tunnel-agent       0.21                7b6077b610be        11 weeks ago        8.771 MB
AI 代码解读

我们需要将构建的retwis-py镜像push到docker registry上。你可以将镜像push到docker hub上,也可以使用阿里云提供的registry服务以避免网络原因造成的docker镜像下载失败。关于使用阿里云Registry服务的文档请参考文档
阿里云容器镜像服务支持从github自动编译镜像,但本文选择手动上传镜像的方式,将本地构建好的镜像retwis-py推送到阿里云的Registry上:

    $ docker tag eba6c2652c0a registry.aliyuncs.com/acs-sample/retwis-py:latest
    $ docker push registry.aliyuncs.com/acs-sample/retwis-py
AI 代码解读

使用阿里云容器服务

我们首先在容器服务页面创建一个编排模版,阿里云编排模版格式是基于Docker Compose的YAML格式,并在此基础上加入阿里云容器服务特有的一些扩展。Python镜像构建Web server镜像,Dockerfile如下所示:

    web:
      image: registry.aliyuncs.com/acs-sample/retwis-py
      command: python app.py
      ports:
        - "8080"
      links:
        - db:redis
      restart: always
      labels:
        aliyun.scale: '3'
        aliyun.routing.port_8080: 'http://retwis-py'
    db:
      image: redis:3.0
      restart: always
AI 代码解读

与上篇文章中的docker-compose.yml文件相比,多了labels定义:

    aliyun.scale: '3'
AI 代码解读

"aliyun.scale" 指定了部署实例的个数。

    aliyun.routing.port_8080: 'http://retwis-py'
AI 代码解读

“aliyun.routing.port_8080“ 配置了路由服务,将用户的域名和容器8080端口绑定到一起。
在阿里云容器服务中,每个集群都有一个SLB服务对外提供Web服务。用户需要将指定的域名绑定到容器集群的SLB实例的IP即可,同时还提供了一个测试域名供用户使用。

创建应用

容器服务页面选择“应用“-“创建应用“,创建一个新的应用(例如:retwis-py-demo),并选择要部署的集群(例如:python-demo),“使用编排模版创建“进入下一步。
Screen_Shot_2016_02_28_at_3_19_55_PM

可以选择“使用已有编排模版“加载刚刚编辑的docker-compose文件,或者直接编辑。
Screen_Shot_2016_02_28_at_3_26_21_PM

点击“创建并部署“后,完成服务的创建。
Screen_Shot_2016_02_28_at_3_26_44_PM

查看应用

成功部署后,可以在应用页面查看其状态
Screen_Shot_2016_02_28_at_3_34_45_PM

然后从详情里面可以看到测试域名为: http://retwis-py.c8d0e9e2d767249baa2ff87a513f7aa4e.cn-beijing.alicontainer.com 打开浏览器访问这个地址就可以看到熟悉的Home界面了。
Screen_Shot_2016_02_28_at_3_35_23_PM

总结

使用阿里云的容器服务可以非常简单地将一个复杂的Web服务部署运行起来,而所需的工作只是使用阿里云的docker compose的扩展label对原有docker compose YAML文件进行简单改造。同时,阿里云容器服务还提供的Web应用的弹性路由服务,是用户可以非常简单地在外部通过域名或VIP的方式访问到容器化的服务,为用户节省了大量的工作。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
jie.su
+关注
目录
打赏
0
0
0
0
11
分享
相关文章
Python数值方法在工程和科学问题解决中的应用
本文探讨了Python数值方法在工程和科学领域的广泛应用。首先介绍了数值计算的基本概念及Python的优势,如易学易用、丰富的库支持和跨平台性。接着分析了Python在有限元分析、信号处理、优化问题求解和控制系统设计等工程问题中的应用,以及在数据分析、机器学习、模拟建模和深度学习等科学问题中的实践。通过具体案例,展示了Python解决实际问题的能力,最后总结展望了Python在未来工程和科学研究中的发展潜力。
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
191 18
【赵渝强老师】数据库不适合Docker容器化部署的原因
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
56 12
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
149 0
企业数据泄露风险防控视域下 Python 布隆过滤器算法的应用研究 —— 怎样防止员工私下接单,监控为例
本文探讨了布隆过滤器在企业员工行为监控中的应用。布隆过滤器是一种高效概率数据结构,具有空间复杂度低、查询速度快的特点,适用于大规模数据过滤场景。文章分析了其在网络访问监控和通讯内容筛查中的实践价值,并通过Python实现示例展示其技术优势。同时,文中指出布隆过滤器存在误判风险,需在准确性和资源消耗间权衡。最后强调构建多维度监控体系的重要性,结合技术与管理手段保障企业运营安全。
61 10
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
78 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
论上网限制软件中 Python 动态衰减权重算法于行为管控领域的创新性应用
在网络安全与行为管理的学术语境中,上网限制软件面临着精准识别并管控用户不合规网络请求的复杂任务。传统的基于静态规则库或固定阈值的策略,在实践中暴露出较高的误判率与较差的动态适应性。本研究引入一种基于 “动态衰减权重算法” 的优化策略,融合时间序列分析与权重衰减机制,旨在显著提升上网限制软件的实时决策效能。
65 2
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
336 33

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问