Docker Swarm部署example-voting-app:容器编排核心技术揭秘

你是否在寻找一个能直观展示Docker Swarm容器编排能力的实战案例?本文将以example-voting-app项目为基础,通过5个核心步骤,带您掌握分布式应用的容器化部署全流程。完成阅读后,您将能够独立使用Docker Swarm部署多服务架构,并理解容器网络、数据持久化和服务扩缩容的实现原理。

【免费下载链接】example-voting-app dockersamples/example-voting-app: 是一个使用Docker和Docker Swarm构建的投票应用示例。适合用于需要学习如何使用Docker和Docker Swarm部署应用的项目。特点是可以提供一个简单的投票应用,展示如何使用Docker和Docker Swarm进行部署。 【免费下载链接】example-voting-app 项目地址: https://gitcode.com/GitHub_Trending/ex/example-voting-app

项目架构解析

example-voting-app采用微服务架构设计,包含5个核心组件,通过Docker容器实现服务解耦与通信。架构图清晰展示了各服务间的数据流向:

项目架构图

核心服务组件及功能:

  • 投票应用(vote/):Python编写的前端应用,提供用户投票界面
  • 结果展示(result/):Node.js实现的结果展示界面,实时更新投票数据
  • 工作节点(worker/):.NET编写的后台服务,处理投票数据异步任务
  • Redis:消息队列,暂存投票请求
  • PostgreSQL:数据库服务,持久化存储投票结果

服务间通过Docker网络实现隔离与通信,docker-stack.yml定义了完整的服务关系和部署策略。

环境准备与初始化

前置条件

  • 安装Docker Desktop(Windows/Mac)或Docker Engine+Docker Compose(Linux)
  • Git环境(用于克隆代码仓库)

项目获取

git clone https://gitcode.com/GitHub_Trending/ex/example-voting-app
cd example-voting-app

Swarm集群初始化

首次使用需初始化Docker Swarm集群:

docker swarm init

若为单节点环境,直接执行上述命令;多节点部署需添加--advertise-addr <MANAGER-IP>参数指定管理节点IP

核心配置文件解析

Docker Swarm部署清单

docker-stack.yml是Swarm部署的核心配置文件,定义了服务组合、网络配置和部署策略:

version: "3.9"
services:
  redis:
    image: redis:alpine
    networks:
      - frontend
      
  db:
    image: postgres:15-alpine
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
      
  vote:
    image: dockersamples/examplevotingapp_vote
    ports:
      - 5000:80
    deploy:
      replicas: 2  # 部署2个投票应用实例
      
  result:
    image: dockersamples/examplevotingapp_result
    ports:
      - 5001:80
      
  worker:
    image: dockersamples/examplevotingapp_worker
    deploy:
      replicas: 2  # 部署2个工作节点

关键配置说明

  1. 服务副本策略:vote和worker服务通过replicas: 2实现多实例部署,提供高可用性
  2. 网络隔离:frontend和backend两个网络实现服务间通信隔离
  3. 数据持久化:PostgreSQL使用命名卷db-data存储数据,防止容器重启数据丢失
  4. 健康检查healthchecks/目录包含PostgreSQL和Redis的健康检查脚本,确保服务可用

部署与验证流程

1. 执行Swarm部署

docker stack deploy --compose-file docker-stack.yml vote

2. 查看服务状态

docker stack services vote

预期输出应显示所有服务处于running状态,每个服务的副本数与配置一致。

3. 访问应用服务

4. 数据持久化验证

  1. 在投票界面提交多个投票
  2. 执行docker service rm vote_db删除数据库服务
  3. 重新部署docker stack deploy --compose-file docker-stack.yml vote
  4. 访问结果界面,验证历史投票数据是否保留

高级操作与最佳实践

服务扩缩容

通过调整副本数实现服务水平扩展:

# 将投票应用扩展到3个实例
docker service scale vote_vote=3

扩展操作会自动在Swarm集群节点间均衡分配容器实例

滚动更新

修改docker-stack.yml后执行以下命令实现无停机更新:

docker stack deploy --compose-file docker-stack.yml vote

Swarm会采用滚动更新策略,先启动新容器,验证健康后再终止旧容器。

健康检查配置

项目提供的健康检查脚本确保服务可用:

在生产环境中,建议在服务定义中添加健康检查配置:

healthcheck:
  test: ["CMD", "/healthchecks/postgres.sh"]
  interval: 10s
  timeout: 5s
  retries: 3

总结与进阶方向

通过example-voting-app的部署实践,我们掌握了Docker Swarm的核心功能:服务编排、网络管理、数据持久化和服务扩缩容。官方文档README.md还提供了Kubernetes部署方案,可通过k8s-specifications/目录下的配置文件进行多平台部署对比学习。

下一步学习建议

  1. 尝试修改docker-stack.yml中的服务副本数,观察Swarm的负载均衡效果
  2. 添加自定义健康检查脚本,优化服务可用性检测
  3. 配置Swarm可视化工具(如Portainer),实现图形化管理
  4. 对比学习Docker Compose(docker-compose.yml)与Swarm部署的差异

掌握容器编排技术是现代DevOps工程师的核心能力,example-voting-app作为Docker官方示例项目,为我们提供了贴近生产环境的实践场景。立即动手操作,体验容器化部署的魅力吧!

【免费下载链接】example-voting-app dockersamples/example-voting-app: 是一个使用Docker和Docker Swarm构建的投票应用示例。适合用于需要学习如何使用Docker和Docker Swarm部署应用的项目。特点是可以提供一个简单的投票应用,展示如何使用Docker和Docker Swarm进行部署。 【免费下载链接】example-voting-app 项目地址: https://gitcode.com/GitHub_Trending/ex/example-voting-app

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值