持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
1. 应用模块分析
这里我们会部署一个复杂一些的应用,例如这里展示的就是是一个投票应用:
总共分为五个模块,针对用户主要有两个页面,两个WebApplication,一个用户投票界面VotingApp,一个展示投票数据界面Resultsapp。
还有一个Redis来做投票数据的缓存,空闲的时候会有worker把数据存到database中~
Voting是python-flask项目
resultsapp是angular项目
worker是java项目
这里三个项目都有一个Dockerfile文件,从源码build出image。另外两个是直接使用的工具,所以不需要
2. yml文件
redis和db都是pull的image,没什么好说的,注意一下配置即可。
定义了两个networks,这里没有指明driver,默认是bridgeDriver。
这里因为voting和result都是需要提供对外访问的,所以多了一个networks。另一个networks是内部同worker,db通信的-backtier。
voting把自己的80端口映射到本地的5000端口 -- 用户侧投票。
result把自己的80端口映射到本地的5001端口 -- 后台侧看结果
3. 部署
直接运行docker-compose up:
这里up过程会比较慢,因为涉及多个build过程,pull过程,下载过程等等。
这里可以看出来,上述一系列操作通过compose使用大大简化了复杂应用的部署,否则我们可能需要给每一个服务和应用都配置一个Dockerfile并进行管理才行
4. 补充命令 - docker-compose build
可以通过docker-compose build命令可以把本地需要build的Dockerfile先build起来,然后up就快一点,另外如果有一些源码发生了变化,可以利用这个重新build