Laravel Docker Windows 403在向composer添加卷后禁止访问
我是Docker的新手,我正在尝试将Docker与PHP连接起来。因此,我遵循本文的教程:一切都运行良好 不幸的是,当我试图将一个用于本地开发的卷添加到Laravel Docker Windows 403在向composer添加卷后禁止访问,laravel,docker,laravel-5.4,Laravel,Docker,Laravel 5.4,我是Docker的新手,我正在尝试将Docker与PHP连接起来。因此,我遵循本文的教程:一切都运行良好 不幸的是,当我试图将一个用于本地开发的卷添加到docker compose.yml文件时,我无法打开该网站。它显示403禁止:您没有访问/此服务器的权限。Apache/2.4.10(Debian)服务器,端口号为192.168.99.100,端口号为8080 My docker-composer.yml: version: '3' services: app: build:
docker compose.yml
文件时,我无法打开该网站。它显示403禁止:您没有访问/此服务器的权限。Apache/2.4.10(Debian)服务器,端口号为192.168.99.100,端口号为8080
My docker-composer.yml:
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
image: laravel-docker
ports:
- 8080:80
volumes:
- .:/srv/app
温顺的文件:
FROM php:7.1.8-apache
MAINTAINER CC
COPY . /srv/app
COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf
RUN chown -R www-data:www-data /srv/app \
&& a2enmod rewrite
Vhost:
<VirtualHost *:80>
DocumentRoot /srv/app/public
ServerName foo.example.com
<Directory "/srv/app/public">
AllowOverride all
Require all granted
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
DocumentRoot/srv/app/public
ServerName foo.example.com
允许超越所有
要求所有授权
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
排除卷后,一切正常。我正在使用Windows 10 Home Basic。顺便说一句,哪里是:/srv/app
的目录
有人能帮忙解决这个问题吗?提前谢谢
/srv/app
是docker容器中的目录
卷标记指定如何将文件系统从容器外部装载到容器内部
:
因此,您的定义将把根目录(docker compose文件所在的位置)和该目录的所有子文件夹装载到容器中的/srv/app
目录中
:srv/app
您的问题是,在vhost.conf
文件中,您配置用于为php页面提供服务的文件夹是/srv/app/public
,而在您的本地计算机上,您可能没有该文件public/index.php
不是你没有权限,而是没有文件可以提供
如果要检查容器中的内容,可以运行
docker compose exec app/bin/bash
并在容器内四处查看 我确实在D:\Docker Toolbox\laravel Docker\public\index.php中有文件,但在D:\Docker Toolbox\laravel Docker\app中没有。仅供参考,D:\Docker Toolbox\laravel Docker
是我的PHP laravel文件夹。我已尝试将卷标记更改为。/:/app。它可以工作,但我不知道为什么它可以工作,因为在Dockerfile中,您将当前目录的内容复制到容器中。您可以使用/:/foo
,它可能会起作用。您会注意到,当您更改index.php
文件时,它不会反映在页面上。我已经让它在本地运行,也许您可以从容器中发布日志,可能与在windows中保存index.php文件和在linux中尝试读取有关,也可能与行尾有关