docker - Docker工具箱卷安装在Windows 10上不起作用

标签 docker docker-compose windows-10 dockerfile docker-toolbox

我是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:

Dockerfile
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仪表板正常工作,但是当我输入网址时,它显示 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,但是它在我的文件系统Bash command and browser screenshot上找不到index.php文件。

请帮忙

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

谢谢

最佳答案

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

  • 在“设置”->“共享文件夹”下的虚拟框中添加了“项目”
    并将其指向我要安装的位置。就我而言,这是
    'D:\ projects'(启用自动安装和永久设置)
  • 启动Docker快速入门终端
  • 输入'docker-machine ssh default'(Docker的VirtualBox VM
    使用称为“默认”)
  • 转到VM文件系统的根目录,命令'cd /'
  • 通过键入'sudo su'切换到用户root
  • 创建要用作安装点的目录。在我哪
    case与VirtualBox中共享文件夹的名称相同:
    'mkdir projects'
  • 通过键入'mount -t vboxsf -o来挂载VirtualBox共享文件夹。
    uid = 1000,gid = 50个项目/ projects”(第一个“项目”是
    VirtualBox共享文件夹名称,第二个“/ projects”是
    我刚刚创建的目录,并希望用作安装点)。
  • 现在,我可以将卷添加到我的Docker文件中,如下所示:'-
    / projects / test / www / build /:/ var / www / html /'(左侧是
    / projects安装在我的VM中,右侧是要安装的目录
    在我的Docker容器中)
  • 运行命令“docker-compose up”以开始使用安装(
    清除:通过外部的Docker Quickstart Terminal运行此命令
    您的本地文件系统上的SSH session
    位于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
    多谢兄弟 :)

    关于docker - Docker工具箱卷安装在Windows 10上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57756835/

    相关文章:

    docker - 在 Azure 函数中从 ACR 提取图像时出错

    bash - docker exec 命令的结果

    linux - 使用 docker 和 --privileged 构建

    git - 将 Jupyter 与文件共享或挂载文件夹一起使用

    c# - 获取实际的系统文化信息

    c# - 如何通过 NFC 标签启动我的应用程序?

    c# - 如何使用 UWP 将图像保存到 azure mysql 数据库

    laravel - Docker 正在使用缓存的环境变量构建镜像

    Docker Golang SDK - 如何将容器标准输出重定向到文件

    docker - JAVA_OPTS/CATALINA_OPTS 参数不适用于 docker-compose.yml