docker COPY all在不在C驱动器中时失败

docker COPY all在不在C驱动器中时失败,docker,docker-compose,dockerfile,docker-machine,Docker,Docker Compose,Dockerfile,Docker Machine,注意:我在windows 10上,使用docker machine/virtual box 我有一个项目,它在我的C:\驱动器上构建并运行良好 如果我将所有文件复制到第二个硬盘驱动器F:\复制/Dockerfile中的path命令似乎成功了,但是当我检查容器中的目录时,它是空的 我的docker文件 FROM php:7.3-apache-stretch RUN docker-php-ext-install pdo_mysql \ && a2enmod rewrite

注意:我在windows 10上,使用docker machine/virtual box

我有一个项目,它在我的C:\驱动器上构建并运行良好

如果我将所有文件复制到第二个硬盘驱动器F:\复制/Dockerfile中的path命令似乎成功了,但是当我检查容器中的目录时,它是空的

我的docker文件

FROM php:7.3-apache-stretch

RUN docker-php-ext-install pdo_mysql \
    && a2enmod rewrite negotiation

COPY docker/php/php.ini /usr/local/etc/php/php.ini
COPY docker/apache/vhost.conf /etc/apache2/sites-available/000-default.conf
COPY . /srv/app

WORKDIR /srv/app
我的docker-compose.yml文件

version: '3'
services:
  app:
    build: .
    ports:
      - 8080:80
    volumes:
      - .:/srv/app
奇怪的是,前两个COPY命令可以工作

COPY docker/php/php.ini /usr/local/etc/php/php.ini
COPY docker/apache/vhost.conf /etc/apache2/sites-available/000-default.conf
我可以导航到这两个目录,分别查看这两个文件的正确内容。一些参考资料表明,容器没有访问我的第二个驱动器的权限,但它显然有访问权限,否则这些文件也无法工作

仅供参考,我正在使用以下方法构建并检查容器

docker-machine up -d --build
docker-machine exec app bash
ls
更新 如果我将复制文件夹更改为/var/www/html,该命令将正常工作。我目前只把文件放在/srv/app中,因为我一直在学习教程。在现阶段,我不知道这样做的优点/缺点

解决方案 感谢@LinPy,我使用此评论来帮助我获得正确的设置:

我在C:\Program Files\Oracle\VirtualBox中打开了一个命令提示符,并运行了以下命令

VBoxManage.exe sharedfolder add default --name "/f" --hostpath "f:\\" --automount
我的VirtualBox设置现在看起来像这样

试试这个:

docker-machine stop

vboxmanage sharedfolder add default --name "project_name" --hostpath "<full_project_path>" --automount

docker-machine start 
如果没有帮助,请尝试以下操作:

docker-machine create -d virtualbox --virtualbox-share-folder "\\?\f:\paht1\path2:installdir" test2

您也可以看到这一点

您是否已经在docker设置中将驱动器f配置为共享?我正在使用docker machine,因此我不确定如何才能做到这一点。我曾尝试在虚拟盒中添加F作为共享文件夹,但这似乎没有改变任何东西。谢谢,成功了!我最后运行了这个VBoxManage.exe sharedfolder添加默认值-name/f-hostpath f:\\-自动装载,它完成了这个任务
docker-machine create -d virtualbox --virtualbox-share-folder "\\?\f:\paht1\path2:installdir" test2