package.json文件赢得';不要在docker容器中持久化
我正在尝试建立一个docker环境。我已经制作了一个Dockerfile来构建我的形象。除了我的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/ &&
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中一步一步地检查建筑过程。