Docker工具箱卷安装无法在Windows 10上运行

时间:2019-09-02 12:18:39

标签: 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文件

请帮助

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

谢谢

2 个答案:

答案 0 :(得分:1)

您需要修改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目录中,让您的Web服务运行。

答案 1 :(得分:1)

最后,我发现了问题,我使用的是docker工具箱,因此它仅安装C:\Users目录,但我的项目文件夹位于d驱动器上。所以我必须将我的D:\projects目录挂载到vm共享文件夹中。我遵循以下步骤

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