2016-09-23 11 views
0

私のドッカーのデータボリュームがホストシステムにマウントされていないのはなぜですか?ドッカーのビルド後にnode_modulesが空になるのはなぜですか?

docker-compose upが完了すると、ドッカーコンテナに入り、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"] 

、ここでは私のドッキングウィンドウ-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 

答えて

3

あなたはnode_modulesボリュームをマウントしていない、それだけでまっすぐなデータ量です。つまり、データはホストに保存されますが、Dockerエンジンのプログラムストアに埋め込まれたフォルダに格納されます。

作曲:ファイル

volumes: 
    - ./src:/var/www/html 
    - /var/www/html/node_modules 

最初のボリュームがマウントされているので、コンテナは、ホスト上./srcを使用します。 2番目のボリュームはマウントされていないため、ホスト上の/var/lib/dockerになります。

それはdocker -vと同じだ - これはあなたのComposeファイルの同等を行い、そしてボリュームがホストに搭載されている場所inspectはあなたを示しています

> mkdir ~/host 
> docker run -d -v ~/host:/vol-mounted -v /vol-not-mounted busybox 
89783d441a74a3194ce9b0d57fa632408af0c5981474ec500fb109a766d05370 
> docker inspect --format '{{json .Mounts}}' 89 
[{ 
    "Source": "/home/scrapbook/host", 
    "Destination": "/vol-mounted", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "rprivate" 
}, { 
    "Name": "55e2f1dd9e490f1e3ce53a859075a20462aa540cd72fac7b4fbe6cd26e337644", 
    "Source": "/var/lib/docker/volumes/55e2f1dd9e490f1e3ce53a859075a20462aa540cd72fac7b4fbe6cd26e337644/_data", 
    "Destination": "/vol-not-mounted", 
    "Driver": "local", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "" 
}] 
関連する問題