node.js - npm install 不在 docker 容器中创建 node_modules 文件夹
问题描述
docker build .
命令RUN npm install
和RUN npm run production
控制台写入后: npm files successfully compiled
,但实际编译的文件没有创建,并且 WORKDIR 中不存在 node_modules 文件夹。可以在 docker 容器中运行此命令以编译脚本吗?如果我在 docker 容器中编译它是否正确?
我的 Dockerfile:
FROM php:8.0-fpm
# Copy composer.lock and composer.json
#COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y libonig-dev libpq-dev \
build-essential \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl \
libzip-dev
RUN apt-get -y install nodejs
RUN apt-get -y install npm
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/
RUN docker-php-ext-install gd
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Copy existing application directory contents
COPY ./www /var/www
ARG CACHE_DATE=not_a_date
RUN npm install
RUN npm run production
COPY ./www /var/www
# Copy existing application directory permissions
COPY --chown=www:www ./www /var/www
# Change current user to www
USER www
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
ENTRYPOINT ["npm", "run"]
解决方案
我制作了 docker-entrypoint.sh 文件并将所有命令写入该文件中。
推荐阅读
- substrate - 在 Polkadot 应用程序开发人员选项卡中,您如何编码 Rust 元组?
- python-3.x - 使用给定 url、代理和用户凭据的 python 下载文件的代码
- scala - 测试中*的含义是什么?
- javascript - 如何在Javascript中复制包含数组的表单元素?
- regex - 如何创建一个将正则表达式与括号匹配的函数
- sql - SSMS - SQL - 有未提交的事务。你想在关闭窗口之前提交这些吗?
- java-8 - Jetty Http2 服务器不适用于 Java 8
- javascript - 数据处理 JS 到 PHP 插入 SQL 数据库
- php - 如何将非字段特定的表单错误消息传递给树枝?
- android - 如何更改cardview的背景颜色5秒并恢复到以前的颜色