Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Node.js Docker最佳实践节点和静态文件_Node.js_Docker - Fatal编程技术网

Node.js Docker最佳实践节点和静态文件

Node.js Docker最佳实践节点和静态文件,node.js,docker,Node.js,Docker,实际上,为了为node js创建dockerfile,我在nodejs基本映像上使用以下命令: RUN \ apt-get update && \ apt-get install -y --no-install-recommends git python build-essential libpng-dev && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /v

实际上,为了为node js创建dockerfile,我在nodejs基本映像上使用以下命令:

RUN \
    apt-get update && \
    apt-get install -y --no-install-recommends git python build-essential libpng-dev && \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Install production package only
COPY package.json /var/www/site

RUN \
    npm install && \
    npm cache clean

COPY . /var/www/site

RUN \
    npm run build && \
    npm run doc

RUN \
    npm prune --production && \
    npm cache clean

ENV NODE_ENV=production
我不喜欢这种方法,因为我需要运行“npm run build”来创建应用程序的客户端部分(基于webpack、backbone、marionnette)

当我运行“npm run build”命令时,我必须安装开发包,而不仅仅是生产包,以及一些debian包来最小化映像

我希望该图像只包含生产包,而不是开发人员的东西

另一方面,如果我只放生产文件,我必须在构建机器上生成客户机代码。所以我必须在主机上安装nodejs和所有必要的包。我更喜欢和docker一起建造

第二次,我想直接从nginx而不是nodejs组件提供静态文件。但我不想在nginx映像上安装节点

docker的基本做法是什么?在docker中构建所有可复制的图像?只在docker中构建主机和包的结果如何


谢谢

我认为最好的方法是使用两个步骤,因为使用一个构建很难,而且在大多数情况下图像不会干净

第一个conatiner将在卷中包含源,并在您的计算机(或CI)上构建静态文件。您无需安装任何其他设备,并且它将保持可复制性

然后,您可以使用静态文件构建nginx映像

例如,您可以使用Makefile,因此只需键入一个短命令