【问题标题】:Deploy apps from release server从发布服务器部署应用程序
【发布时间】:2016-08-17 18:03:10
【问题描述】:

我不喜欢在生产服务器上发布我的项目。可能是我没有足够的经验,没有人教我如何以正确的方式做到这一点。

现在我有几个带有 scala 的 repos(在喷雾之上)。我有一切可以在我的本地机器上构建和运行这个项目(当然,我开发它们)。所以在我的生产服务器上安装了 jenkins,以便从 git 同步、构建和运行。它现在可以工作,但我不喜欢它,因为我需要在每台我想运行我的项目的机器上安装 jenkins。如果我想向咖啡馆的朋友展示我的项目怎么办?

所以我有了一个想法:如果我在构建应用程序之前运行测试,制作可移植构建(例如使用 sbt 本机打包程序)并将其保存在远程服务器“发布服务器”上。该服务器只是让这些准备好启动的应用程序。

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

将来我想:

  1. 在 docker 容器中下载并运行项目。
  2. 准备好为前端提供静态文件。运行泊坞窗 带有 nginx 的容器和带有静态文件的链接卷

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

感谢任何帮助!

【问题讨论】:

    标签: jenkins deployment docker release


    【解决方案1】:

    在我看来,一种常见的反模式是每次执行部署时都构建软件。最好通过引入二进制存储库管理器将构建过程与部署行为分开(您已经在这样的例子中提到,nexus)。

    只有成功测试的构建才会被推送到存储库,因此您可以将每个成功的构建视为一个迷你版本。这样做的一个副产品是您的生产服务器不必预先安装所有构建软件(如 Jenkins、ANT、Maven 等)。

    需要注意的是,像 NexusArtifactory 这样的现代存储库管理器现在也支持 Docker 注册表,因此您也可以使用它们来部署 docker 映像。

    更新

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

    chef cookbook delivery - chef server vs. artifactory + berkshelf

    【讨论】:

      猜你喜欢
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2021-01-17
      相关资源
      最近更新 更多