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 共享文件夹。我遵循了以下步骤
- 在 'Settings' 下的 Virtual Box 中 -> 'Shared Folders' 添加 'projects'
并将其指向我要安装的位置。就我而言,这是
'D:\projects'(自动挂载和永久启用)
- 启动Docker快速启动终端
- 键入 'docker-machine ssh default'(Docker 的 VirtualBox VM
使用称为 'default')
- 转到虚拟机文件系统的根目录,命令'cd /'
- 通过键入 'sudo su'
切换到用户 root
- 创建要用作挂载点的目录。在我的哪个
大小写与 VirtualBox 中共享文件夹的名称相同:
'mkdir projects'
- 通过键入“mount -t vboxsf -o”挂载 VirtualBox 共享文件夹
uid=1000,gid=50 projects /projects'(第一个'projects'是
VirtualBox共享文件夹名称,第二个'/projects'是
我刚刚创建并想用作挂载点的目录)。
- 现在我可以像这样向我的 Docker 文件添加卷:'-
/projects/test/www/build/:/var/www/html/'(左边是
/projects mount in my VM,右边是要挂载的目录
在我的 docker 容器中)
- 运行命令'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
谢谢兄弟:)
我是 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 它可以工作,但我无法在我的文件系统
请帮忙
如果您需要任何其他信息,请随时询问 :)。
谢谢
您需要修改您的 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 共享文件夹。我遵循了以下步骤
- 在 'Settings' 下的 Virtual Box 中 -> 'Shared Folders' 添加 'projects' 并将其指向我要安装的位置。就我而言,这是 'D:\projects'(自动挂载和永久启用)
- 启动Docker快速启动终端
- 键入 'docker-machine ssh default'(Docker 的 VirtualBox VM 使用称为 'default')
- 转到虚拟机文件系统的根目录,命令'cd /'
- 通过键入 'sudo su' 切换到用户 root
- 创建要用作挂载点的目录。在我的哪个 大小写与 VirtualBox 中共享文件夹的名称相同: 'mkdir projects'
- 通过键入“mount -t vboxsf -o”挂载 VirtualBox 共享文件夹 uid=1000,gid=50 projects /projects'(第一个'projects'是 VirtualBox共享文件夹名称,第二个'/projects'是 我刚刚创建并想用作挂载点的目录)。
- 现在我可以像这样向我的 Docker 文件添加卷:'- /projects/test/www/build/:/var/www/html/'(左边是 /projects mount in my VM,右边是要挂载的目录 在我的 docker 容器中)
- 运行命令'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 谢谢兄弟:)