在docker build之后为什么node_modules为空?

时间:2016-09-23 03:02:55

标签: docker docker-compose dockerfile

为什么我的docker数据卷在主机系统上是空的?

docker-compose up完成后,我可以执行到docker容器并查看node_modules目录,在那里我可以看到所有模块已成功安装。但是,当我检查主机上的node_modules目录时,我什么也看不见,它是空的。

这是Dockerfile:

FROM ubuntu:14.04

WORKDIR /var/www/html

COPY src/package.json /var/www/html/package.json

# install curl, apache, php
RUN 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 \
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

# 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

# install node js 6
RUN NVM_DIR="/root/.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

COPY src/ /var/www/html

EXPOSE 80

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

这是我的docker-compose.yml文件:

version: "2"
services:
  db:
    image: mysql:5.7
    volumes:
      - "./.data/db:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: abc
      MYSQL_DATABASE: abc
      MYSQL_USER: abc
      MYSQL_PASSWORD: abc

  wordpress:
    build: .
    restart: always
    depends_on:
      - db
    links:
      - db
    ports:
      - "8000:80"
    volumes:
      - ./src:/var/www/html
      - /var/www/html/node_modules

1 个答案:

答案 0 :(得分:3)

您没有挂载function send444() { error_reporting( 0 ); $status = '444 No Response'; $protocol = ( isset( $_SERVER[ 'SERVER_PROTOCOL' ] ) ? substr( $_SERVER[ 'SERVER_PROTOCOL' ], 0, 8 ) : 'HTTP/1.1' ) . ' '; $header = array( $protocol . $status, 'Status: ' . $status ); foreach ( $header as $sent ) { header( $sent ); } exit(); } 卷,它只是一个直接的数据卷。这意味着数据存储在您的主机上,但它将位于Docker引擎程序存储中的文件夹中。

在撰写文件中:

node_modules

已装入第一个卷,因此容器在主机上使用volumes: - ./src:/var/www/html - /var/www/html/node_modules 。第二个卷未安装,因此它将位于主机上的./src

/var/lib/docker相同 - 这相当于您的Compose文件,docker -v显示卷在主机上的安装位置:

inspect