Node.js 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

我已经对接了一个需要一些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-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