从主机映射卷更改时容器文件未更新
Container files not updated when changed from the host mapped volume
我有以下 docker-compose.yml
:
version: '3'
services:
web:
build:
context: .
dockerfile: ./.docker/node.dockerfile
volumes:
- D:\Proj\Web:/app
ports:
- '3000:3000'
depends_on:
- 'db'
networks:
- holder-network
restart: on-failure
tty: true
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
networks:
- holder-network
restart: always
environment:
MYSQL_ROOT_PASSWORD: P@ssw0rd
MYSQL_DATABASE: holder_db
MYSQL_USER: holder_usr
MYSQL_PASSWORD: P@ssw0rd
networks:
holder-network:
driver: bridge
volumes:
db_data:
和 node.dockerfile
:
FROM node:7.10
MAINTAINER Juliano Nunes
RUN mkdir /var/www
RUN npm install nodemon -g
WORKDIR /var/www
ADD . /var/www
RUN npm install
CMD nodemon
我正在从主机更改 D:\Proj\Web
下的文件,但它不会更新容器中的文件。为什么?
要在 docker 上为 windows 映射容器 运行 中的主机卷,您需要确保您的驱动器共享到嵌入式 VM。否则,该目录将从 VM 的文件系统挂载,该文件系统在该位置将为空。您需要进入Windows上的docker设置,将D盘添加到共享目录列表中。请在此处查看 docker 的相关文档:https://docs.docker.com/docker-for-windows/#shared-drives
我发现了错误。我的 docker-compose.yml
使用 /app
作为路径,node.dockerfile
使用 /var/www
.
这是更新的(工作)版本:
version: '3'
services:
web:
build:
context: .
dockerfile: ./.docker/node.dockerfile
volumes:
- D:\Proj\Web:/var/www
ports:
- '3000:3000'
depends_on:
- 'db'
networks:
- holder-network
restart: on-failure
tty: true
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
networks:
- holder-network
restart: always
environment:
MYSQL_ROOT_PASSWORD: P@ssw0rd
MYSQL_DATABASE: holder_db
MYSQL_USER: holder_usr
MYSQL_PASSWORD: P@ssw0rd
networks:
holder-network:
driver: bridge
volumes:
db_data:
我有以下 docker-compose.yml
:
version: '3'
services:
web:
build:
context: .
dockerfile: ./.docker/node.dockerfile
volumes:
- D:\Proj\Web:/app
ports:
- '3000:3000'
depends_on:
- 'db'
networks:
- holder-network
restart: on-failure
tty: true
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
networks:
- holder-network
restart: always
environment:
MYSQL_ROOT_PASSWORD: P@ssw0rd
MYSQL_DATABASE: holder_db
MYSQL_USER: holder_usr
MYSQL_PASSWORD: P@ssw0rd
networks:
holder-network:
driver: bridge
volumes:
db_data:
和 node.dockerfile
:
FROM node:7.10
MAINTAINER Juliano Nunes
RUN mkdir /var/www
RUN npm install nodemon -g
WORKDIR /var/www
ADD . /var/www
RUN npm install
CMD nodemon
我正在从主机更改 D:\Proj\Web
下的文件,但它不会更新容器中的文件。为什么?
要在 docker 上为 windows 映射容器 运行 中的主机卷,您需要确保您的驱动器共享到嵌入式 VM。否则,该目录将从 VM 的文件系统挂载,该文件系统在该位置将为空。您需要进入Windows上的docker设置,将D盘添加到共享目录列表中。请在此处查看 docker 的相关文档:https://docs.docker.com/docker-for-windows/#shared-drives
我发现了错误。我的 docker-compose.yml
使用 /app
作为路径,node.dockerfile
使用 /var/www
.
这是更新的(工作)版本:
version: '3'
services:
web:
build:
context: .
dockerfile: ./.docker/node.dockerfile
volumes:
- D:\Proj\Web:/var/www
ports:
- '3000:3000'
depends_on:
- 'db'
networks:
- holder-network
restart: on-failure
tty: true
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
networks:
- holder-network
restart: always
environment:
MYSQL_ROOT_PASSWORD: P@ssw0rd
MYSQL_DATABASE: holder_db
MYSQL_USER: holder_usr
MYSQL_PASSWORD: P@ssw0rd
networks:
holder-network:
driver: bridge
volumes:
db_data: