0

我忙于开发一个API,我的移动应用程序,现在我期待在后端解决方案的部署。这些组件非常简单:nginx,.NET核心应用程序和postgresql用于持久性。如果我需要快速扩展,我想首先在一个节点上开始使用Docker Swarm。为Postgresql提供一个单独的数据卷看起来很顺利,但我无法找到关于升级和数据库迁移的任何建议。当我需要升级Postgresql映像(不需要pg_upgrade的次要升级)时,这必须是手动操作还是可以通过滚动升级来管理?要求将在发生这种情况时关闭所有应用程序实例。同样,我如何管理数据库迁移,例如静态数据/模式更改?我将需要退出所有应用程序实例,完成迁移并重新启动。任何想法不胜感激。与码头工人群数据库的持续部署

回答

0

所以,走了,做了这个,我想我会张贴我的解决方案最终看起来像什么细节。首先,我使用了GoCD,这是一个梦幻般的开源连续传送服务器,可以实现从测试到生产的全部交付。使用Docker可以很好地应用单一职责原则,所以我为Web,应用程序,数据和监控创建了独立的Docker堆栈。数据堆栈由Postgres的容器和一般处理数据库备份的容器组成。 Web堆栈由Traefik容器组成 - 一个反向代理服务器,用于将流量路由到应用程序堆栈。应用程序堆栈本身由用于C#应用程序API的可伸缩容器以及使用db-up进行托管数据库迁移的容器组成。最后,监控栈有用于logstash,logspout,kibana,grafana和portainer容器中,该应用记录到elasticsearch和kibana/grafana提供此数据的可视化。 Portainer支持群体的基本管理。

提交给到位桶上的主分支触发更新库通过GoCD我的测试环境下,用在CentOS的bash脚本相当数量的编织这一切在一起。当测试看起来不错时,我可以将按钮部署投入生产。其滋润Docker容器的图像是GoCD建立文物和版本作为构建过程的一部分,所以很容易恢复到并在必要时重新发现它们。

我只想说,有大量复杂的克服,例如互联网服务依赖和启动,但通常的谷歌搜索量和坚持不懈的支付股息。现在就像一个魅力!