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

我对以下顺序感到非常满意:

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

    但是在我发现的每个示例中,我看到了不同的方法:
  • 将./src文件夹添加到容器
  • 在容器
  • 内运行npm install(具有开发依赖项)
  • 在容器
  • 内运行Bower安装(如果需要)
  • 在容器
  • 内运行grunt(或gulp)

    IMO,第一种方法生成的容器更轻便,效率更高,但是所有示例都在使用第二种方法。我想念什么吗?

    最佳答案

    我看到的唯一区别是,您可以使用第二种方法来复制完整的grunt安装。

    对于第一个,您将依赖于可能在不同环境下以不同方式执行的本地操作。

    容器应基于易于复制的镜像,而不是依赖包含“需要什么”的主机文件夹(不知道该部分的完成方式)

    如果安装附带的构建环境开销太大,对于grunt镜像而言,则可以:

  • 创建专用于安装的镜像“app.tar”(I did that for Apache, that I had to recompile,创建deb package in a shared volume)。
    就您而言,您可以为已安装的应用程序创建一个存档('tar')。
  • 使用第一个容器中的体积从基本图像创建容器
    docker run --it --name=app.inst --volumes-from=app.tar ubuntu untar /shared/path/app.tar
    docker commit app.inst app
    

  • 然后最终结果是一个图像,其中应用程序存在于其文件系统中。

    这是您的方法1和2的混合。

    07-24 09:23