Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 运行时ng构建的优化_Angular_Docker - Fatal编程技术网

Angular 运行时ng构建的优化

Angular 运行时ng构建的优化,angular,docker,Angular,Docker,我开发了一个小的Angular应用程序,并将其打包为一个容器。此应用程序利用角度“环境”,因此我可以使用各种--环境=标志(例如测试,开发,产品)构建它 考虑到我希望维护一个docker映像,并在run时使用适当的标志开始,我构建了一个小的入口点脚本,它基本上执行ng build--environment=$UI_ENV并最终启动nginx UI\u ENV是我在docker运行时传递给容器的变量 这很好,但缺点是容器需要15到20秒来编译angular应用程序并最终启动nginx(由于编译时间

我开发了一个小的Angular应用程序,并将其打包为一个容器。此应用程序利用角度“环境”,因此我可以使用各种
--环境=
标志(例如
测试
开发
产品
)构建它

考虑到我希望维护一个docker映像,并在
run
时使用适当的标志开始,我构建了一个小的入口点脚本,它基本上执行
ng build--environment=$UI_ENV
并最终启动nginx

UI\u ENV
是我在
docker运行时传递给容器的变量

这很好,但缺点是容器需要15到20秒来编译angular应用程序并最终启动nginx(由于编译时间)

我只是想知道这是否是最好的方法(在我描述的范围内)。或者如果这是最好的办法


谢谢

为什么不制作一个包含所有预构建环境的映像?你为什么要在每次图像启动后重建?嗯。。。我在每次启动时编译的唯一原因是,我保持nginx根文件夹不变(在
dist
目录中),并将
ng build
的结果放在那里(在
docker run
时间)。如果我没看错的话,你是在建议我在3个不同的文件夹中在
docker build
时间生成3个输出,并使用输入变量在
docker run
时间以编程方式重新配置nginx根文件夹?这正是我所说的:)这将节省你很多秒,而且您的图像文件会小得多,因为您只需要
dist
文件夹中的文件。虽然会有3个这样的文件夹,但与您放在其中的node_模块相比,仍然要少得多。擦掉那个。。显然,您将使用docker来构建它,因此您仍然需要所有文件。无论如何,是的,请在docker build上执行此操作,并使用
run
更改
根文件夹
谢谢@PierreDuc。。。是的,这完全有道理。我真傻,一开始就没想过。是的,容器的大小是另一个优化,我将开始看看。现在它大约有1GB(哇!)。我从nginx开始,然后添加angular CLI、NPM、安装模块等。。最终结果是1GB。我想知道新引入的多阶段构建过程是否可以利用()。谢谢