无法在 docker 机器上安装 npm 模块
Can't install npm module on docker machine
我是 Docker 的新手,我在 windows、
上遇到了问题
在我的 docker 机器上 运行 npm i
时出现错误:
panel_1 | > phantomjs-prebuilt@2.1.16 install /var/www/html/node_modules/phantomjs-prebuilt
panel_1 | > node install.js
panel_1 |
panel_1 | module.js:550
panel_1 | throw err;
panel_1 | ^
panel_1 |
panel_1 | Error: Cannot find module 'readable-stream'
panel_1 | at Function.Module._resolveFilename (module.js:548:15)
panel_1 | at Function.Module._load (module.js:475:25)
panel_1 | at Module.require (module.js:597:17)
panel_1 | at require (internal/module.js:11:18)
panel_1 | at Object.<anonymous> (/var/www/html/node_modules/concat-stream/index.js:1:78)
panel_1 | at Module._compile (module.js:653:30)
panel_1 | at Object.Module._extensions..js (module.js:664:10)
panel_1 | at Module.load (module.js:566:32)
panel_1 | at tryModuleLoad (module.js:506:12)
panel_1 | at Function.Module._load (module.js:498:3)
我的撰写:
panel:
build: './panel'
volumes:
- ./panel:/var/www/html
command: make init_dev
我的Docker文件:
FROM php:7.2-fpm
RUN apt-get update && apt-get install -y \
openssl \
git \
unzip \
libzip-dev \
wget \
gnupg
# NodeJs
RUN wget -qO- https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y nodejs
RUN apt-get install -y build-essential
# Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install mysqli pdo pdo_mysql zip bcmath
WORKDIR /var/www/html
生成文件init_dev:
composer install
npm i
npm run dev
已经花了一天时间解决了。我试图降级 Phantomjs/升级 npm/更改全局 node_modules 的权限,但没有任何帮助。
本地没问题。
刚发现不使用volumes
npm安装成功。
似乎是由于 windows 安装的文件夹。因为不支持 npm 试图添加的符号链接。
我的解决方法如下所示:
COPY . /var/www/temp
WORKDIR /var/www/temp
RUN npm i
WORKDIR /var/www/html
然后我用 CMD 复制完成的模块:
cp -r ../temp/node_modules ./
看起来像个拐杖,但 mb 它会帮助别人
我是 Docker 的新手,我在 windows、
上遇到了问题
在我的 docker 机器上 运行 npm i
时出现错误:
panel_1 | > phantomjs-prebuilt@2.1.16 install /var/www/html/node_modules/phantomjs-prebuilt
panel_1 | > node install.js
panel_1 |
panel_1 | module.js:550
panel_1 | throw err;
panel_1 | ^
panel_1 |
panel_1 | Error: Cannot find module 'readable-stream'
panel_1 | at Function.Module._resolveFilename (module.js:548:15)
panel_1 | at Function.Module._load (module.js:475:25)
panel_1 | at Module.require (module.js:597:17)
panel_1 | at require (internal/module.js:11:18)
panel_1 | at Object.<anonymous> (/var/www/html/node_modules/concat-stream/index.js:1:78)
panel_1 | at Module._compile (module.js:653:30)
panel_1 | at Object.Module._extensions..js (module.js:664:10)
panel_1 | at Module.load (module.js:566:32)
panel_1 | at tryModuleLoad (module.js:506:12)
panel_1 | at Function.Module._load (module.js:498:3)
我的撰写:
panel:
build: './panel'
volumes:
- ./panel:/var/www/html
command: make init_dev
我的Docker文件:
FROM php:7.2-fpm
RUN apt-get update && apt-get install -y \
openssl \
git \
unzip \
libzip-dev \
wget \
gnupg
# NodeJs
RUN wget -qO- https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y nodejs
RUN apt-get install -y build-essential
# Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install mysqli pdo pdo_mysql zip bcmath
WORKDIR /var/www/html
生成文件init_dev:
composer install
npm i
npm run dev
已经花了一天时间解决了。我试图降级 Phantomjs/升级 npm/更改全局 node_modules 的权限,但没有任何帮助。 本地没问题。
刚发现不使用volumes
npm安装成功。
似乎是由于 windows 安装的文件夹。因为不支持 npm 试图添加的符号链接。 我的解决方法如下所示:
COPY . /var/www/temp
WORKDIR /var/www/temp
RUN npm i
WORKDIR /var/www/html
然后我用 CMD 复制完成的模块:
cp -r ../temp/node_modules ./
看起来像个拐杖,但 mb 它会帮助别人