Node.js docker容器中未安装节点_模块
我已经对接了一个需要一些npm依赖项的php应用程序,因此我在Docker容器Node.js docker容器中未安装节点_模块,node.js,docker,Node.js,Docker,我已经对接了一个需要一些npm依赖项的php应用程序,因此我在Docker容器nodejs中安装了所需的包,使用: FROM php:8.0.2-fpm-alpine WORKDIR /var/www/html RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install mysqli RUN apk add icu-dev RUN docker-php-ext-configure intl && docker
nodejs
中安装了所需的包,使用:
FROM php:8.0.2-fpm-alpine
WORKDIR /var/www/html
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install mysqli
RUN apk add icu-dev
RUN docker-php-ext-configure intl && docker-php-ext-install intl
RUN apk add --update libzip-dev curl-dev &&\
docker-php-ext-install curl && \
apk del gcc g++ &&\
rm -rf /var/cache/apk/*
COPY docker/php-fpm/config/php.ini /usr/local/etc/php/
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN apk add --update nodejs nodejs-npm
RUN npm install gulp-cli -g
RUN npm install
COPY src src/
CMD ["php-fpm"]
EXPOSE 9000
这是我的docker compose.yml
:
版本:“3.7”
services:
php-fpm:
container_name: boilerplate_app
restart: always
build:
context: .
dockerfile: ./docker/php-fpm/Dockerfile
volumes:
- ./src:/var/www/html
问题是,当我使用以下命令进入容器时:docker exec-ti-boilerplate\u-app sh
然后启动该命令:ls-la
我看不到任何node\u模块
文件夹,事实上,如果我尝试执行已安装的依赖项gulp
我得到:
在/var/www/html中找不到本地模块
尝试运行:npm安装
我做错了什么?有两个问题:
包.json的文件夹中运行npm install
,该文件夹列出了需要安装的节点模块。如果您检查日志,您应该会看到如下内容
src
文件夹时,您将/var/www/html/
的内容替换为src
内容,其中可能不包括任何节点模块
文件夹卷:
隐藏图像内置的所有内容/var/www/html
,并将其替换为主机系统中的内容。如果从docker compose.yml
文件中删除此块,则容器将运行内置到映像中的代码(包括npm安装
ed节点模块)。如果我删除卷:
所有内容都插入到src
文件夹中,并且该文件夹中不存在node\u modules
@DavidMazeif我删除卷:所有内容都插入到src文件夹中,并且节点_模块也不存在于该文件夹中
no such file or directory, open '/var/www/html/package.json'
volumes:
- ./src:/var/www/html