如何将dockerized应用程序交付给客户端?

我的应用程序由Web服务器(node.js),多个工作人员(node.js)和Postgres数据库组成。 通常情况下,我只是在heroku上用postgres插件创build应用程序,然后用Procfile定义的进程推送应用程序。

不过,客户希望应用程序通过docker交付给他的私人服务器。 所以stream程应该是这样的:我在我的node.js应用程序(在Web服务器上的工作人员),“推”更改回购(docker集线器?)和客户端,当他准备好“拉”改变的应用程序?)到他的服务器和应用程序(docker集装箱?)重新启动与新的,更新的代码。

我是新来的docker,甚至在读了几篇文章/教程后,我不知道如何使用docker…

所以理想情况下,如果将有一个docker图像(在docker集线器),其中将包含我的应用程序代码,数据库和客户端可以拉它不知何故,只是运行它…是否有可能与docker?

标准策略是将系统中的每个组件打包到单独的docker映像(这称为微服务架构),然后创build一个“编排” – 一组用于部署,启动/停止和更新的脚本。

例如:

  • 部署脚本从docker回购(Docker Hub或您的私人回购)中提取图像,并调用启动脚本
  • 启动脚本只是docker run每个组件
  • 停止脚本为每个组件调用docker stop
  • 更新脚本调用停止脚本,然后从repo更新图像,然后调用启动脚本

在互联网上有软件项目旨在简化编排,例如这个 SO答案有一个全面的列表。 但通常简单的bash脚本工作得很好。