【问题标题】:How to describe running npm script in Dockerfile如何在 Dockerfile 中描述正在运行的 npm 脚本
【发布时间】:2022-05-10 23:42:26
【问题描述】:

我在 Dockerfile 中描述了执行 npm 脚本的命令:

WORKDIR /usr/src/app/server
CMD ["npm", "run", "build"]

这只是一个构建我的项目的 webpack 脚本

"scripts": {
  "build": "webpack --mode development --open",
  "watch": "webpack --mode development --open --watch",
  "prod": "webpack --mode production"
},

在构建期间我可以看到该命令已执行:

Step 23/28 : WORKDIR /usr/src/app/server
 ---> Running in e85934faf65a
Removing intermediate container e85934faf65a
 ---> 9f14cb58deca
Step 24/28 : CMD [ "npm", "run", "build" ]
 ---> Running in 6d3157d2e962
Removing intermediate container 6d3157d2e962
 ---> 9237c0a03fe9
Step 25/28 : WORKDIR /usr/src/app
 ---> Running in 3888c83ed88f

我希望得到生成的 dist 文件夹。但我可以看到该文件夹​​不是在容器内生成的

root@82a01ee6d1fe:/usr/src/app/server# ls
package-lock.json  package.json  src  tsconfig.json  webpack.config.js

如何正确执行 Docker 文件中的 npm 脚本?
我做错了什么?

【问题讨论】:

  • 您的屏幕截图中的“dist”目录是在主机上而不是在容器中吗?这是否意味着您正在运行带有卷挂载的容器?
  • 是的,在屏幕截图上它不在容器中。我没有安装卷。我想在容器内生成它
  • 屏幕截图不可搜索,它们不能提出好的问题或答案。
  • @UlrichEckhardt 感谢您的通知。改为文字

标签: docker npm webpack


【解决方案1】:

我使用下一个命令解决了这个问题

RUN npm run build

这确实不像CMD ["npm", "run", "build"]那样执行

我在使用 webpack 时遇到了一个问题。它在 node_modules 中不起作用,我在全球范围内安装了它:

RUN npm install -g webpack webpack-cli

在容器中我找到了由 webpack 生成的 dist 文件夹和文件 bundle.js

root@49f66ba44ab9:/usr/src/app/server# ls
dist  node_modules  package-lock.json  package.json  src  tsconfig.json  webpack.config.js
root@49f66ba44ab9:/usr/src/app/server# ls ./dist
bundle.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2020-08-20
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多