当前位置:  开发笔记 > 编程语言 > 正文

Dockerfile中的开发依赖项或用于生产和测试的单独Dockerfiles

如何解决《Dockerfile中的开发依赖项或用于生产和测试的单独Dockerfiles》经验,为你挑选了1个好方法。

我不确定是否应该Dockerfile为我的Node.js应用程序创建不同的文件.一个用于没有开发依赖项的生产,另一个用于包含开发依赖项的测试.

或者一个基本上是开发的文件Dockerfile.dev.然后两个文件的主要区别是npm install命令:

生产:

FROM ...
...
RUN npm install --quiet --production
...
CMD ...

开发/测试:

FROM ...
...
RUN npm install
...
CMD ...

问题出现了,因为我希望能够通过docker run命令在容器内运行我的测试.因此,我需要测试依赖项(通常是我的dev依赖项).

将生产中不需要的依赖项放入图像中似乎有点奇怪.另一方面,创建/维护第二个Dockerfile.dev只是微小的差异似乎也不对.那么这种问题的好习惯是什么呢?



1> Boynux..:

不,你不需要有不同的Dockerfiles,事实上你应该避免这种情况.

docker的目标是将您的应用程序运送到一个不可变的,经过良好测试的工件(docker images)中,这对于生产和测试甚至开发都是相同的.

为什么?因为如果您为测试和生产构建不同的工件,您如何保证您已经测试过的产品也在生产中?你不能,因为他们是两个不同的东西.

鉴于所有这些,如果通过测试表示unit测试,那么您可以将源代码安装在docker容器中并运行测试而不构建任何docker镜像.那没关系.请记住,您可以为测试构建图像,但速度非常慢,使开发变得安静困难和缓慢,这一点都不好.然后,如果您的测试通过,您可以安全地构建您的app容器.

但是,如果您的意思是接受测试实际上需要针对正在运行的应用程序运行,那么您应该为您的应用程序创建一个映像(只有一个)并在另一个容器中运行测试(例如,安装测试源代码)并对该容器运行测试.这显然意味着您的应用程序的构建对于npm测试的安装而言是不同的.

我希望这会给你一些看法.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有