package.json文件赢得';不要在docker容器中持久化

package.json文件赢得';不要在docker容器中持久化,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我正在尝试建立一个docker环境。我已经制作了一个Dockerfile来构建我的形象。除了我的package.json文件在容器中无法持久存在的问题外,其他一切似乎都正常工作。似乎它正在某处被移除。我做错了什么?以下是我的Docker文件内容: FROM ubuntu:14.04 RUN groupadd -r webuser && useradd -r -g webuser webuser && mkdir /home/webuser/ &&

我正在尝试建立一个docker环境。我已经制作了一个Dockerfile来构建我的形象。除了我的package.json文件在容器中无法持久存在的问题外,其他一切似乎都正常工作。似乎它正在某处被移除。我做错了什么?以下是我的Docker文件内容:

FROM ubuntu:14.04

RUN groupadd -r webuser && useradd -r -g webuser webuser && mkdir /home/webuser/ && chown webuser:webuser /home/webuser/

# install curl, apache, php
RUN sudo DEBIAN_FRONTEND=noninteractive \
    apt-get -y update && \
    apt-get -y install software-properties-common python-software-properties && \
    add-apt-repository ppa:ondrej/php && \
    apt-get -y update && \
    apt-get install -y --force-yes \
    curl \
    git-core \
    apache2 \
    php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl \
    php5.6-bz2 php5.6-zip && \
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /usr/local/bin/composer && \
    chmod +x /usr/local/bin/composer

# install PHPUnit
RUN curl -L https://phar.phpunit.de/phpunit.phar -o phpunit.phar && \
    chmod +x phpunit.phar && \
    mv phpunit.phar /usr/local/bin/phpunit && \
    chmod +x /usr/local/bin/phpunit

ADD package.json /var/www/html/package.json

WORKDIR /var/www/html

RUN chown -R webuser:webuser /var/www/html

USER webuser

# install node js 6
RUN NVM_DIR="/home/webuser/.nvm" && \
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash && \
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \
    nvm install 6 && \
    npm install -g webpack && \
    npm install

RUN echo 'export NVM_DIR="/home/webuser/.nvm"\n\
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"'\
>> /home/webuser/.bashrc

COPY src /var/www/html/

USER root

EXPOSE 80

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

尝试将“添加”命令更改为以下命令:

RUN mkdir -p /var/www/html
ADD package.json /var/www/html

另外,请确保package.json存在于

中,并尝试将ADD命令更改为以下命令:

RUN mkdir -p /var/www/html
ADD package.json /var/www/html
    FROM ubuntu:14.04

    ADD package.json /var/www/html/package.json

    RUN groupadd -r webuser && useradd -r -g webuser webuser && mkdir /home/webuser/ && chown webuser:webuser /home/webuser/

    # install curl, apache, php
    RUN sudo DEBIAN_FRONTEND=noninteractive \
        apt-get -y update && \
        apt-get -y install software-properties-common python-software-properties && \
        add-apt-repository ppa:ondrej/php && \
        apt-get -y update && \
        apt-get install -y --force-yes \
        curl \
        git-core \
        apache2 \
        php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl \
        php5.6-bz2 php5.6-zip && \
        php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
        php composer-setup.php && \
        php -r "unlink('composer-setup.php');" && \
        mv composer.phar /usr/local/bin/composer && \
        chmod +x /usr/local/bin/composer

    # install PHPUnit
    RUN curl -L https://phar.phpunit.de/phpunit.phar -o phpunit.phar && \
        chmod +x phpunit.phar && \
        mv phpunit.phar /usr/local/bin/phpunit && \
        chmod +x /usr/local/bin/phpunit



    WORKDIR /var/www/html

    RUN chown -R webuser:webuser /var/www/html

    USER webuser

    # install node js 6
    RUN NVM_DIR="/home/webuser/.nvm" && \
        curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash && \
        [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \
        nvm install 6 && \
        npm install -g webpack && \
        npm install

    RUN echo 'export NVM_DIR="/home/webuser/.nvm"\n\
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"'\
    >> /home/webuser/.bashrc

    COPY src /var/www/html/

    USER root

    EXPOSE 80

    CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
还要确保package.json存在于

    FROM ubuntu:14.04

    ADD package.json /var/www/html/package.json

    RUN groupadd -r webuser && useradd -r -g webuser webuser && mkdir /home/webuser/ && chown webuser:webuser /home/webuser/

    # install curl, apache, php
    RUN sudo DEBIAN_FRONTEND=noninteractive \
        apt-get -y update && \
        apt-get -y install software-properties-common python-software-properties && \
        add-apt-repository ppa:ondrej/php && \
        apt-get -y update && \
        apt-get install -y --force-yes \
        curl \
        git-core \
        apache2 \
        php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl \
        php5.6-bz2 php5.6-zip && \
        php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
        php composer-setup.php && \
        php -r "unlink('composer-setup.php');" && \
        mv composer.phar /usr/local/bin/composer && \
        chmod +x /usr/local/bin/composer

    # install PHPUnit
    RUN curl -L https://phar.phpunit.de/phpunit.phar -o phpunit.phar && \
        chmod +x phpunit.phar && \
        mv phpunit.phar /usr/local/bin/phpunit && \
        chmod +x /usr/local/bin/phpunit



    WORKDIR /var/www/html

    RUN chown -R webuser:webuser /var/www/html

    USER webuser

    # install node js 6
    RUN NVM_DIR="/home/webuser/.nvm" && \
        curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash && \
        [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \
        nvm install 6 && \
        npm install -g webpack && \
        npm install

    RUN echo 'export NVM_DIR="/home/webuser/.nvm"\n\
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"'\
    >> /home/webuser/.bashrc

    COPY src /var/www/html/

    USER root

    EXPOSE 80

    CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
我已经执行了你的Dockerfile,也遇到了同样的问题。如果ADD位于Dockerfile的开头,则该选项有效。但还有一些其他问题。生成过程将在之后立即停止

 chmod +x /usr/local/bin/composer
它不会安装PHPUnit和nodeJS,也不会设置www目录的所有者等等

也许你应该把整个过程连在一起

我已经执行了你的Dockerfile,也遇到了同样的问题。如果ADD位于Dockerfile的开头,则该选项有效。但还有一些其他问题。生成过程将在之后立即停止

 chmod +x /usr/local/bin/composer
它不会安装PHPUnit和nodeJS,也不会设置www目录的所有者等等


也许你应该把整个过程连在一起

似乎我们需要在源目录中包含
package.json
文件。单独复制
package.json
并运行
npm安装
模式用于利用docker的缓存系统

似乎我们需要在源目录中包含
package.json
文件。单独复制
package.json
并运行
npm安装
模式用于利用docker的缓存系统

不,没用不,没用help@mahadazad文件是否与Dockerfile位于同一文件夹中?是的,文件与Dockerfile位于同一位置。@mahadazad可能是这样的语句:COPY src/var/www/html/overrides the file?尝试不使用它来构建。但我在许多docker文件中都看到过这种模式。它在那里工作得很好。@mahadazad可能会在bash中一步一步地检查构建过程。@mahadazad是否将该文件与Dockerfile放在同一文件夹中?是的,该文件存在于Dockerfile所在的同一位置。@mahadazad可能会使用以下语句:COPY src/var/www/html/覆盖该文件?尝试不使用它来构建。但我在许多docker文件中都看到过这种模式。“它在那里工作得很好。”马哈达扎德可能会在bash中一步一步地检查建筑过程。