注意:我在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设置现在看起来像这样;
答案 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