docker - Docker不会将文件夹从主机同步到容器

标签 docker docker-compose dockerfile

我在docker-compose.yml文件上尝试了多种不同的组合。

当这行:

- .:/var/www/html

改为:
- *:/var/www/html

然后它将复制工作目录中的文件,但是没有同步。
香港专业教育学院试图用qoutes包围线,将点更改为./,但没有结果。 var / www / html为空或仅在使用*时才包含文件,但没有同步。

这是我的Dockerfile
FROM php:7.3.0-apache

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && apt-get update && apt-get install -y git libzip-dev unzip \
    && docker-php-ext-install zip \
    && a2enmod rewrite headers

COPY . /var/www/html/

COPY ./config/vhost.conf /etc/apache2/sites-available/000-default.conf

和docker-compose.yml。
version: '3.4'

services:
    app:
        ports:
            - 80:80
        environment:
            - APACHE_DOCUMENT_ROOT=/var/www/html/app/public
        build:
            context: .
        volumes:
            - .:/var/www/html

编辑:
更新。我试图删除复制行,但只能在容器上创建一个空的html目录。
据我检查的方式,我在runnint容器上执行docker exec -it,然后在html目录上执行ls命令。
到目前为止,我已经重新安装了docker toolbox,并注意到其中包含一个gui ...在执行docker volume ls时,我没有看到任何卷,但是该卷显示在Kitematic中。
但是,主机上的目录不是您期望的,它不是docker-compose所在的驱动器d上的文件夹,而是我的文档中的文件夹。尝试将其更改为gui上的正确目录,并显示目录无效。我记得在某处读到docker对主机文件系统的访问受到限制,我想知道我是否没有错过这里的某个步骤,而应该与docker共享整个驱动器D。

编辑2:
将驱动器d上的文件夹添加到名为default的vm到共享文件夹列表中,重新启动全部,但仍然没有骰子。如何指定驱动器D上的位置?

最佳答案

如果要保持主机和容器之间的文件夹同步,则需要使用mount代替coping:
check this documentation

对于您的问题,您需要从Dockerfile中删除COPY . /var/www/html/
您也可以检查此post.

关于docker - Docker不会将文件夹从主机同步到容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61659093/

相关文章:

php - 如何在 php docker 镜像中启用 pdo_mysql

docker - Docker将来支持32位ubuntu(12.04)还是suse OS?

python - Docker 输入文件并保存在输出中

docker - 通过docker访问的Swagger UI不起作用

docker - 已提供标志但未定义

spring - 在Spring boot应用程序中打印docker容器id

git - 如何在 kubernetes/openshift 的初始化容器参数中使用环境变量?

docker - Prometheus 连接 Kubernetes 时出现 "Connect: Connection Refused"

docker - Docker中的动态更改Traefik前端配置

Docker 在跨平台环境中组合