实例介绍
这是一篇关于如何构建和运行一个由多个容器组成的分布式应用的示例教程。
开始使用:
首先,您需要下载并安装Docker Desktop(支持Mac和Windows),Docker Compose将会自动安装。对于Linux用户,请确保安装了最新版本的Compose。
本方案采用Python、Node.js和.NET技术栈,以Redis作为消息传递中间件,Postgres作为存储解决方案。
在本目录下运行以下命令来构建并启动应用:
docker compose up
此时,投票应用将在 http://localhost:5000 上运行,结果展示页面位于 http://localhost:5001。
在Docker Swarm上运行:
如果您希望在Docker Swarm上运行,首先确保您已经初始化了Swarm集群(如果没有,运行
docker swarm init
)。然后,在本目录下运行:docker stack deploy --compose-file docker-stack.yml vote
在Kubernetes上运行:
我们提供了k8s-specifications文件夹,其中包含了Voting App服务的YAML规格说明。运行以下命令来创建部署和服务,注意它们将在您当前的命名空间中创建(如果您未进行更改,则为默认命名空间):
kubectl create -f k8s-specifications/
然后,投票网页应用将在集群的每个主机的31000端口上可用,结果网页应用将在31001端口上可用。
要移除它们,运行:
kubectl delete -f k8s-specifications/
架构:
本应用包括以下几部分:
1. 一个用Python编写的前端网页应用,允许您在两个选项之间进行投票
2. 一个Redis实例,用于收集新的投票
3. 一个.NET工作器,用于处理投票并将它们存储到
4. 一个由Docker卷支持的Postgres数据库
5. 一个Node.js网页应用,实时显示投票结果
注意:
投票应用每个客户端浏览器只接受一次投票,如果从一个客户端已经提交过投票,则不会注册额外的投票。这不是一个完美设计的分布式应用示例,而是展示了您可能会遇到的各种类型的组件和语言(队列、持久化数据等),以及在Docker中基本处理它们的方法。
【实例截图】
【核心代码】
文件清单
└── example-voting-app-8b0f5ad5149f7548349e2fd1e54a49b503bf3faa
├── LICENSE
├── MAINTAINERS
├── README.md
├── architecture.excalidraw.png
├── docker-compose.images.yml
├── docker-compose.yml
├── docker-stack.yml
├── healthchecks
│ ├── postgres.sh
│ └── redis.sh
├── k8s-specifications
│ ├── db-deployment.yaml
│ ├── db-service.yaml
│ ├── redis-deployment.yaml
│ ├── redis-service.yaml
│ ├── result-deployment.yaml
│ ├── result-service.yaml
│ ├── vote-deployment.yaml
│ ├── vote-service.yaml
│ └── worker-deployment.yaml
├── result
│ ├── Dockerfile
│ ├── docker-compose.test.yml
│ ├── package-lock.json
│ ├── package.json
│ ├── server.js
│ ├── tests
│ │ ├── Dockerfile
│ │ ├── render.js
│ │ └── tests.sh
│ └── views
│ ├── angular.min.js
│ ├── app.js
│ ├── index.html
│ ├── socket.io.js
│ └── stylesheets
│ └── style.css
├── seed-data
│ ├── Dockerfile
│ ├── generate-votes.sh
│ └── make-data.py
├── vote
│ ├── Dockerfile
│ ├── app.py
│ ├── requirements.txt
│ ├── static
│ │ └── stylesheets
│ │ └── style.css
│ └── templates
│ └── index.html
└── worker
├── Dockerfile
├── Program.cs
└── Worker.csproj
13 directories, 42 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论