gpt4 book ai didi

node.js - 在 Docker 容器内或外部运行 Grunt/Gulp?

转载 作者:IT老高 更新时间:2023-10-28 12:41:13 24 4
gpt4 key购买 nike

我正在尝试为使用 grunt/gulp 部署在 docker 容器中的 nodejs 应用程序的构建过程确定一个好的做法。

我对以下顺序很满意:

  • 在容器外使用 grunt(或 gulp)构建
  • 将 ./dist 文件夹添加到容器中
  • 在容器内运行 npm install(带有 --production 标志)

但在我找到的每个示例中,我看到了不同的方法:

  • 将 ./src 文件夹添加到容器中
  • 在容器内运行 npm install(带有开发依赖项)
  • 在容器内运行 bower install(如果需要)
  • 在容器内运行 grunt(或 gulp)

IMO,第一种方法生成更轻、更高效的容器,但所有示例都使用第二种方法。我错过了什么吗?

最佳答案

我想建议我为静态生成的网站所做的第三种方法,即单独的构建镜像。

在这种方法中,您的主要 Dockerfile (项目根目录中的那个)成为构建和开发镜像,基本上在第二种方法中做所有事情。但是,您覆盖 CMD在运行时,将构建的 dist 压缩文件夹到 dist.tar或类似的。

然后,您有另一个文件夹(类似于 image ),其中包含 Dockerfile .此图像的作用只是提供 dist.tar内容。所以我们做一个docker cp <container_id_from_tar_run> /dist .然后 Dockerfile只需安装我们的网络服务器并拥有 ADD dist.tar /var/www .

摘要类似于:

  • 构建 builder Docker 镜像(它为您提供一个没有网络服务器的工作环境)。至此,应用程序构建完成。我们可以使用 grunt serve 运行开发中的容器或者启动我们内置的开发服务器的任何命令。
  • 我们不运行服务器,而是覆盖默认命令来压缩我们的 dist 文件夹。像 tar -cf /dist.tar /myapp/dist .
  • 我们现在有一个带有 /dist.tar 的临时容器人工制品。将其复制到我们称为 image 的实际部署 Docker 文件夹中使用 docker cp <container_id_from_tar_run> /dist.tar ./image/ .
  • 现在,我们可以使用 docker build ./image 构建小型 Docker 镜像,而无需我们所有的开发依赖项。 .

我喜欢这种方法,因为它仍然是 Docker。这种方法中的所有命令都是 Docker 命令,您可以真正精简最终部署的实际镜像。

如果您想使用这种方法查看图片,请查看 https://github.com/gliderlabs/docker-alpine它使用构建器镜像(在构建器文件夹中)构建 tar.gz 文件,然后将其复制到各自的 Dockerfile文件夹。

关于node.js - 在 Docker 容器内或外部运行 Grunt/Gulp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29967391/

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