【发布时间】:2021-09-03 03:59:31
【问题描述】:
在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"]
【问题讨论】:
-
请在 package.json 文件中添加 package.json 文件或至少
npm run production含义。另外,您如何确认未创建 node_modules 文件夹?似乎是什么问题让您提出了有关文件夹的问题? -
npm run production - 工作正常,所有文件都已编译,但未创建文件。在不是 docker 容器中,所有叉子都很好,我认为 docker 有问题。为什么 npm install 后不存在 node_modules 文件?我认为体积和安装有问题。我用命令“ls”检查,node_modules 不存在,也编译了文件。
-
npm run production和npm run build一样吗?你怎么知道他们编译成功?您正在检查哪些卷以及如何检查(文字命令和检查过程)?请使用此信息更新您的问题,以便我可以更快更好地为您提供帮助 -
是的,就像
build命令。我在执行npm run production时检查控制台输出,当我在容器外运行此命令时,此输出相同。并在此命令后输出显示成功结果,但未创建文件。 -
好的,请尽可能添加终端输出。您如何检查文件是否存在?