gpt4 book ai didi

node.js - Docker最佳实践nodejs和静态文件

转载 作者:搜寻专家 更新时间:2023-10-31 23:20:30 26 4
gpt4 key购买 nike

实际上,为了为 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”命令时,我必须安装 developpement 包,不仅是生产包,还有一些 debian 包以最小化图像。

我希望图像只包含生产包而不包含开发内容。

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

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

docker 的基本实践是什么?在 docker 中构建所有内容以具有可复制的图像?在主机上构建并在 docker 中仅打包结果?

谢谢

最佳答案

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

第一个容器会将源放在一个卷中,并在您的机器(或 CI)上构建静态文件。您不必安装任何其他东西,它会保持可重现性。

然后就可以使用静态文件构建nginx镜像了。

您可以使用例如一个 Makefile,所以你只需要输入一个简短的命令

关于node.js - Docker最佳实践nodejs和静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38168790/

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