docker - 如何在 Dockerfile 中描述正在运行的 npm 脚本
问题描述
我在 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 脚本?
我做错了什么?
解决方案
我使用下一个命令解决了这个问题
RUN nmp 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
推荐阅读
- d3.js - 减少词云 zingcharts 中的空白?
- bash - 如果在 heredoc (ssh ... <
如果命令在
EOF
. 但我无法使用变量来存储命令或将输出存储在文件中。例如:
#!/bin/bash a='Some other commands in local machine' ssh ubuntu@xx.xx.xx.xx << EOF echo $a; ldt=$(date +'%Y%m%d') aw
- apache-storm - 向 Storm 拓扑添加交互式元素
- json - 理解这个无对象的 JSON
- database - db2 import export 到相同的 ixf 但不同的进程
- javascript - 将数据传递给 ngAfterViewInit() 中的函数 - Angular 6
- mysql - MySQL Pass max() 列作为间隔天数
- android - 翻译成阿拉伯语时,浮动按钮向右移动
- ios - 通过 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 没有 FaceID 的 SecItemCopyMatching
- dns - Bind9:限制子网查询