如果不在C驱动器中,则docker COPY全部失败

时间:2019-08-13 11:12:39

标签: docker docker-compose dockerfile docker-machine

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

我有一个项目可以在 C:\ 驱动器上构建并正常运行。

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

我的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,我使用了此注释来帮助我进行正确的设置:https://github.com/docker/machine/issues/3908#issuecomment-412385611

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

VBoxManage.exe sharedfolder add default --name "/f" --hostpath "f:\\" --automount

我的VirtualBox设置现在看起来像这样;

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试:

docker-machine stop

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

docker-machine start 

然后配置mount

volumes:
  - /project_name:/path/in/container/project_name

如果没有帮助,请尝试以下操作:

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

您还可以看到此issue