2016-09-29 6 views
1

Ich versuche eine Docker-Umgebung zu erstellen. Ich habe eine Dockerfile erstellt, die mein Image erstellt. Alles scheint gut zu funktionieren, außer für das Problem, dass meine package.json Datei nicht in dem Container persistieren wird. Es scheint, als ob es irgendwo entfernt wird. Was mache ich falsch? Hier ist meine Docker Dateiinhalt:Die Datei package.json wird im Andock-Container nicht gespeichert

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"] 

Antwort

0

Es scheint, als müssten wir die package.json Datei im Quellverzeichnis haben. Kopieren package.json separat und Ausführen des npm install Muster wird verwendet, um das Caching-System von Docker zu verwenden.

0

Versuchen Sie ADD-Befehl an die folgende Veränderung:

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

auch sicherstellen, dass die package.json vorhanden ist in der

+0

Nein, es hat nicht geholfen – mahadazad

0
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"] 

ich habe führte Ihre Dockerfile aus und hatte das gleiche Problem. Es funktioniert, wenn das ADD am Anfang der Dockerfile ist. Aber es gibt einige andere Probleme. Der Build-Prozess stoppt direkt nach

chmod +x /usr/local/bin/composer 

es wird nicht PHPUnit und NodeJS, setzen Besitzer des www-Verzeichnis installieren und so weiter.

Vielleicht sollten Sie den gesamten RUN in eins zu ketten.

+0

Nein, es funktioniert nicht für mich – mahadazad

+0

@mahadazad Haben Sie die Datei im selben Ordner wie Sie Dockerfile? – Gabbax0r

+0

Ja, die Datei existiert an derselben Stelle wie die Dockerdatei. – mahadazad

Verwandte Themen