gpt4 book ai didi

node.js - Docker 和基于 grunt 的工作流自动化

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:01 24 4
gpt4 key购买 nike

我正在寻找一个基于 Docker 的项目设置,它支持:

  1. 与生产最匹配的开发环境
  2. 适用于所有开发人员的最佳工作流自动化工具
  3. 高度便携/可快速设置开发环境,支持 Linux、OSX 和 Windows。目前我们使用 Vagrant,这似乎仍然是最明显的选择。

为了满足#1:

  • 用于开发、测试、暂存和生产的同一应用容器(node.js + Apache)
  • 不要仅出于开发目的向容器添加任何自定义工作流工具

为了满足#3:

  • 不要求开发人员都为各自的环境/操作系统安装自己的开发工具(例如,让他们在主机中安装 node.js、npm、grunt 等)

那么为了满足#2,我的想法是:

  • 有第二个“开发”容器,它与 Node/apache 容器共享文件并运行所有工作流自动化。
  • 从其中运行所有 grunt watch/rebuild/reload/browser-sync 等。
  • 如果使用 Vagrant,文件共享基本上是主机->开发容器->应用容器

上述模型是否有任何缺陷,或者更好的想法?

一个可能遗漏的问题是是否——如果是,那么如何——避免每次都在生产环境中执行完整的容器构建。在不冒生产容器与其他容器不匹配的风险的情况下,我想“打包”容器,以便在将新代码推送到生产环境时,应用程序服务器只需要重新启动,而不是 npm install 等。特别是,一旦我们正在插入生产,它应该不再需要从第三方服务器中提取任何东西才能运行。

最佳答案

这是一个有点宽泛的问题,答案将是自以为是,而不是得到客观论据的支持,但这是我要改变的地方:

  1. Node.js 很好,但我会选择 nginx 而不是 Apache。 Node.js 和 Nginx 都是基于事件的并且允许更多的吞吐量,这是 Node.js 的优势之一。但这可能会有所不同,比如如果您需要某些仅限 Apache 的模块,但 Nginx 似乎更自然地放在 Node 前面。

  2. 为什么要有一个单独的容器?通过不需要开发工具来最小化生产容器?

我真的认为在生产容器中使用 grunt.js 不会太重,但同样,您似乎试图将影响降到最低。无论如何,或者您可以将代码和 grunt watch 等放在一个容器中并像那样部署。优点是您正在简化设置,缺点是您的生产构建可能会安装一些额外的库。例如,您可以通过在部署生产容器时将 NODE_ENV 设置为生产环境来缓解这种情况,这样在启动时,您的脚本就会知道不要加载某些开发工具。

关于node.js - Docker 和基于 grunt 的工作流自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com