Node.js Docker:ETXTBSY:文本文件正忙

Node.js Docker:ETXTBSY:文本文件正忙,node.js,laravel,docker,npm,Node.js,Laravel,Docker,Npm,我试图在我的Docker容器上运行Laravel Mix 我已经安装了最新版本的npm和node(感谢Laradock) 现在,当我尝试运行npm install npm警告回滚回滚express@4.16.3失败(这可能是无害的):ETXTBSY:text文件正忙,取消链接“/srv/app/node_modules/express/package.json.3619593601” npm WARN rollback回滚阵列-flatten@1.1.1失败(这可能是无害的):ETXTBSY:

我试图在我的Docker容器上运行Laravel Mix

我已经安装了最新版本的npm和node(感谢Laradock)

现在,当我尝试运行
npm install


npm警告回滚回滚express@4.16.3失败(这可能是无害的):ETXTBSY:text文件正忙,取消链接“/srv/app/node_modules/express/package.json.3619593601”
npm WARN rollback回滚阵列-flatten@1.1.1失败(这可能是无害的):ETXTBSY:文本文件正忙,取消链接“/srv/app/node_modules/express/node_modules/array fla
tten/package.json.2934324270'

节点:v10.5.0

npm:v6.1.0

Windows主机

嘉宾:Linux 2369f4b16e52 4.9.93-boot2docker#1 SMP-Thu May 10 16:27:54 UTC 2018 x86_64 GNU/Linux

Dockerfile:

# this is the DEV/LOCAL dockerfile (default)
FROM php:7.2-apache


COPY apache/vhost.conf /etc/apache2/sites-available/000-default.conf

# Get an update, install some bits
RUN apt-get -yqq update \
    && apt-get -yqq install --no-install-recommends apt-utils unzip libzip-dev

RUN docker-php-ext-install pdo_mysql opcache zip \
    && a2enmod rewrite negotiation

ARG DOCKER_ENV=${DOCKER_ENV}

#if we are in dev, we need xdebug

RUN if [ ${DOCKER_ENV} = local ] || [ ${DOCKER_ENV} = dev ] || [ ${DOCKER_ENV} = development ]; then \
        pecl install xdebug-2.6.0 \
        && docker-php-ext-enable xdebug \
    ; fi

#copy our php.ini over and the composer details
COPY php/*.ini /usr/local/etc/php/conf.d/
COPY composer/composer-install.sh /tmp/composer-installer.sh

WORKDIR /tmp

#if we are in dev, run the Composer install
RUN if [ ${DOCKER_ENV} = local ] || [ ${DOCKER_ENV} = dev ] || [ ${DOCKER_ENV} = development ]; then \
        apt-get -yqq install --no-install-recommends git \
        && chmod +x composer-installer.sh \
        && ./composer-installer.sh \
        && mv composer.phar /usr/local/bin/composer \
        && chmod +x /usr/local/bin/composer \
        && su -l www-data -s /bin/sh -c "composer --version" \
    ; fi


#Need these for Laravel Mix (compiling assets) - stolen from Laradock

###########################################################################
# Node / NVM:
###########################################################################

# Check if NVM needs to be installed
ARG NODE_VERSION=stable
ENV NODE_VERSION ${NODE_VERSION}
ARG INSTALL_NODE=true
ARG INSTALL_NPM_GULP=true
ARG INSTALL_NPM_BOWER=true
ARG INSTALL_NPM_VUE_CLI=true
ARG NPM_REGISTRY
ENV NPM_REGISTRY ${NPM_REGISTRY}
ENV NVM_DIR ${PROJECT_PATH}/.nvm

RUN if [ ${INSTALL_NODE} = true ]; then \
    # Install nvm (A Node Version Manager)
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash \
        && . $NVM_DIR/nvm.sh \
        && nvm install ${NODE_VERSION} \
        && nvm use ${NODE_VERSION} \
        && nvm alias ${NODE_VERSION} \
        && if [ ${NPM_REGISTRY} ]; then \
        npm config set registry ${NPM_REGISTRY} \
        ;fi \
        && if [ ${INSTALL_NPM_GULP} = true ]; then \
        npm install -g gulp \
        ;fi \
        && if [ ${INSTALL_NPM_BOWER} = true ]; then \
        npm install -g bower \
        ;fi \
        && if [ ${INSTALL_NPM_VUE_CLI} = true ]; then \
        npm install -g vue-cli \
        ;fi \
;fi

# Wouldn't execute when added to the RUN statement in the above block
# Source NVM when loading bash since ~/.profile isn't loaded on non-login shell
RUN if [ ${INSTALL_NODE} = true ]; then \
    echo "" >> ~/.bashrc && \
    echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \
    echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm' >> ~/.bashrc \
;fi

# Add NVM binaries to root's .bashrc
USER root

RUN if [ ${INSTALL_NODE} = true ]; then \
    echo "" >> ~/.bashrc && \
    echo 'export NVM_DIR="/home/laradock/.nvm"' >> ~/.bashrc && \
    echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm' >> ~/.bashrc \
;fi

# Add PATH for node
ENV PATH $PATH:$NVM_DIR/versions/node/v${NODE_VERSION}/bin

RUN if [ ${NPM_REGISTRY} ]; then \
    . ~/.bashrc && npm config set registry ${NPM_REGISTRY} \
;fi




WORKDIR /srv/app
ps传真
提供:

PID TTY      STAT   TIME COMMAND
 21 pts/0    Ss     0:00 bash
300 pts/0    R+     0:00  \_ ps fax
  1 ?        Ss     0:00 apache2 -DFOREGROUND
 16 ?        S      0:00 apache2 -DFOREGROUND
 17 ?        S      0:00 apache2 -DFOREGROUND
 18 ?        S      0:00 apache2 -DFOREGROUND
 19 ?        S      0:00 apache2 -DFOREGROUND
 20 ?        S      0:00 apache2 -DFOREGROUND
是否与此有关: “boot2docker基于VirtualBox。出于安全原因,VirtualBox不允许共享文件夹上的符号链接。”


看起来
npm config set registry${NPF_registry}
没有完成,所以,这可能就是
npm安装找到ETXTBSY的原因

如果[${NPM_REGISTRY}],尝试从Dockerfile
运行中删除;然后\
. ~/.bashrc&&npm配置集注册表${npm_注册表}\
;fi

并在npm安装之前手动执行它
,看看会发生什么。

您能发布您的Dockerfile吗?看起来您正试图在一个容器中执行某项操作,该容器是从一个Dockerfile具有运行CMD/ENTRYPOINT的映像创建的。npmI添加了我的Dockerfile。你还问什么?没有变化。我猜还有别的东西在运行。您只是尝试在容器内执行
ps fax
netstat
吗?上面添加了详细信息。