为什么我的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
答案 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