node.js - Node & Docker,安装 Node 模块后无法运行脚本
问题描述
真的很难在这里找出问题。我正在尝试在我的工作站上为开发人员容器化一个 WordPress 站点。目的。(免责声明:对 Docker 来说有点新,目前在几个 Laravel 项目中出于相同目的使用它,但尚未将其集成到生产中)。
这是我的相关部分docker-compose.yml
version: "3"
services:
...
npm:
build:
context: .
dockerfile: ./docker/node/Dockerfile
container_name: npm
volumes:
- ./:/var/www/html
- /var/www/html/docker/
working_dir: /var/www/html/wp-content/themes/my-cust-theme
depends_on:
- wordpress
entrypoint: ["npm", "--no-bin-links"]
networks:
- wp-net
...
networks:
wp-net:
这是相关 Dockerfile 的内容,(我在这里有更多内容,但为了调试它已减少到此):
FROM node:12.17.0-alpine3.9
RUN apk --update --no-cache --virtual build-dependencies add \
git \
libtool \
python2 \
nasm \
libpng-dev \
autoconf \
gcc \
g++ \
automake \
make
我知道这里最好使用多阶段构建,或者这里提到的其他方法。只是在优化容器之前尝试让 Node 构建脚本正常运行。
构建容器后:
docker-compose up -d --build
我跑:
docker-compose run --rm npm install
并且这些软件包似乎安装成功。事实上,安装后运行docker-compose run --rm npm list --depth 0
给了我预期的输出。我可以看到我的所有软件包package.json
都已安装。
我的项目的脚本如下:
"scripts": {
"debug": " webpack-dev-server --config webpack.dev.js",
"dev": "webpack-dashboard -- webpack-dev-server --config webpack.dev.js",
"production": "NODE_ENV=production npx webpack --config webpack.prod.js --progress --hide-modules"
}
在这一点上我完全迷失的是:如果我跑
docker-compose run --rm npm run dev
输出类似于:
Creating some-new-wp-site_npm_run ... done
> some-new-wp-site@1.0.0 dev /var/www/html/wp-content/themes/my-cust-theme
> webpack-dashboard -- webpack-dev-server --config webpack.dev.js
sh: webpack-dashboard: not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! some-new-wp-site@1.0.0 dev: `webpack-dashboard -- webpack-dev-server --config webpack.dev.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the some-new-wp-site@1.0.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-01-23T15_51_28_095Z-debug
我尝试运行docker-compose down -v --rmi all
并重复这个过程,它产生了相同的结果。
解决方案
没有npm err log
我只能猜测问题出在哪里。可能 npm-cli 无法找到webpack-dashboard
andwebpack-dev-server
命令,因为它没有全局安装。
尝试将webpack-dashboard
and添加webpack-dev-server
到 package.json 中的脚本中。
"scripts": {
... your scripts,
"webpack-dashboard": "webpack-dashboard",
"webpack-dev-server": "webpack-dev-server"
}
推荐阅读
- c++ - ZeroMQ: How to cast a pollitem_t item, used in Poller, back to a ZeroMQ socket?
- android - 适用于 Android 的 ARCore
- c# - UWP/Windows 10 场景 - 如何使用 Launcher 类启动多个图像打开多个照片窗口?
- python - 烧瓶 sha256_crypt.verify 返回“不是有效的 sha256_crypt 哈希”
- matlab - 如何在 Matlab 中“平滑”散射边界
- javascript - 自第一次数据库调用未完成以来无法加载值
- multithreading - 我可以在非 GUI 线程上创建小部件,然后发送到 GUI 吗?
- apache - 如何修复我的 Php 文档中链接到 mysql 的 403 禁止消息?
- r - 每个日期和整数值的子集数据框 - R
- nginx - 将 nginx 代理到另一个 nginx,然后再到应用程序