Docker 工具箱卷安装不适用于 windows 10

Docker toolbox volume mounting not working on windows 10

我是 docker

的新手

这是我的配置

文件夹结构

Test :
     - docker-compose.yml
     - Dockerfile
     - www
         - index.html

Docker YML

version: "3"
services:
    www:
        build: .
        ports:
            - "8001:80"
        volumes:
            - ./www:/var/www/html/
        links:
            - db
        networks:
            - default
    db:
        image: mysql:8.0.16
        command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci','--default-authentication-plugin=mysql_native_password']
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test
        volumes:
            - ./dump:/docker-entrypoint-initdb.d
            - persistent:/var/lib/mysql
        networks:
            - default
    phpmyadmin:
        image: phpmyadmin/phpmyadmin:4.8
        links:
            - db:db
        ports:
            - 8000:80
        environment:
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test
volumes:
    persistent:

Docker文件

FROM php:7.2.6-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql gd curl
RUN a2enmod rewrite
RUN chmod -R 775 /var/www/html

phpmyadmin 仪表板工作正常,但是当我进入网络时 url 它显示 403 禁止错误

当它检查日志时显示如下错误:

[Mon Sep 02 12:00:44.290707 2019] [autoindex:error] [pid 18] [client 192.168.99.1:52312] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive
192.168.99.1 - - [02/Sep/2019:12:00:44 +0000] "GET / HTTP/1.1" 403 508 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"

我的“/var/www/html”目录是空的。我该如何解决?

更新

我使用 bash 创建了一个文件 index.php 它可以工作,但我无法在我的文件系统

上找到 index.php 文件

请帮忙

如果您需要任何其他信息,请随时询问 :)。

谢谢

您需要修改您的 Dockerfile,

FROM php:7.2.6-apache
RUN docker-php-ext-install pdo_mysql
RUN a2enmod rewrite
COPY www/ /var/www/html
RUN chmod -R 775 /var/www/html

这会将您的 www 目录复制到容器内的 /var/www/html 目录,让您的网络服务 运行.

我终于想通了这个问题,我正在使用 docker 工具箱,所以它只挂载 C:\Users 目录,但我的项目文件夹在 d 驱动器上。所以我必须将我的 D:\projects 目录挂载到 vm 共享文件夹。我遵循了以下步骤

  1. 在 'Settings' 下的 Virtual Box 中 -> 'Shared Folders' 添加 'projects' 并将其指向我要安装的位置。就我而言,这是 'D:\projects'(自动挂载和永久启用)
  2. 启动Docker快速启动终端
  3. 键入 'docker-machine ssh default'(Docker 的 VirtualBox VM 使用称为 'default')
  4. 转到虚拟机文件系统的根目录,命令'cd /'
  5. 通过键入 'sudo su'
  6. 切换到用户 root
  7. 创建要用作挂载点的目录。在我的哪个 大小写与 VirtualBox 中共享文件夹的名称相同: 'mkdir projects'
  8. 通过键入“mount -t vboxsf -o”挂载 VirtualBox 共享文件夹 uid=1000,gid=50 projects /projects'(第一个'projects'是 VirtualBox共享文件夹名称,第二个'/projects'是 我刚刚创建并想用作挂载点的目录)。
  9. 现在我可以像这样向我的 Docker 文件添加卷:'- /projects/test/www/build/:/var/www/html/'(左边是 /projects mount in my VM,右边是要挂载的目录 在我的 docker 容器中)
  10. 运行命令'docker-compose up'开始使用挂载(待 clear: 运行 这个命令通过 Docker Quickstart Terminal 在外面 您的本地文件系统上的 SSH 会话 docker-compose.yml 文件所在)。

然后我像这样更改 docker-compose.yml :

version: "3"
services:
    www:
        build: 
         context: .
         dockerfile: Dockerfile
        ports:
            - "8001:80"
        volumes:
            - /projects/test/www:/var/www/html/
        links:
            - db
        networks:
            - default
    db:
        image: mysql:8.0.16
        command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci','--default-authentication-plugin=mysql_native_password']
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test
        volumes:
            - ./dump:/docker-entrypoint-initdb.d
            - persistent:/var/lib/mysql
        networks:
            - default
    phpmyadmin:
        image: phpmyadmin/phpmyadmin:4.8
        links:
            - db:db
        ports:
            - 8000:80
        environment:
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test
volumes:
    persistent:

我还更新了 oracle vm。 我从这里找到了这个解决方案:https://github.com/moby/moby/issues/22430#issuecomment-215974613 谢谢兄弟:)