从发布服务器部署应用程序

我不喜欢什么时候在生产服务器上发布我的项目。也许我只是没有足够的经验,没有人教会我如何以正确的方式做到这一点。

现在我有几个回购scala(在喷雾顶部)。 我有一切在我的本地机器上构build和运行这个项目(当然,我开发它们)。 所以在我的生产服务器上安装jenkins,以便从git,构build和运行同步。 它现在工作,但我不喜欢它,因为我需要在每台机器上安装jenkins我想运行我的项目。 如果我想在咖啡馆给我的朋友展示我的项目呢?

所以我有了主意:如果我在构build应用程序之前运行testing,那么如何进行可移植构build(使用本地包装器),并将其保存在远程服务器“发布服务器”上。 该服务器只是让这些准备好被推出的应用程序。

然后我去生产服务器,运行bash脚本,从发布服务器下载可执行文件并在计算机上运行我的项目

今后我想:

  1. 下载并运行Docker容器中的项目。
  2. 准备好为前端提供静态文件。 使用nginx运行docker容器,并将链接的卷与静态文件一起运行

我听说过nexus( http://www.sonatype.org/nexus/ ),那个艺术家用来保存他们的歌曲,图片等等。 我相信应该有像我这样的开源项目

任何帮助表示赞赏!

在我看来,一个常见的反模式是在每次执行部署时都要构build软件。build议您最好通过引入二进制存储库pipe理器来将构build过程与部署过程分离开来(您曾经提到过例如,nexus)。

  • 最佳实践 – 使用资源库pipe理器
  • 二进制存储库pipe理器
  • 我怎样才能自动将战争从Nexus部署到Tomcat?

只有成功的testing版本才会被推送到版本库,所以你可以把每一个成功的版本作为一个小版本。 这样做的一个副产品就是你的生产服务器不需要预先安装所有的构build软件(比如Jenkins,ANT,Maven等)。

应该指出的是,像Nexus和Artifactory这样的现代版本库pipe理器现在也支持Dockerregistry,所以你也可以使用这些来部署Docker镜像。

更新

一个相关的厨师问题,一个没有中间二进制文件(像jar)的技术。 在这种情况下,软件仍然通过创build存储在repo中的tar分布来“释放”。

厨师食谱交付 – 厨师服务器与artifactory + berkshelf