Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel Docker Windows 403在向composer添加卷后禁止访问_Laravel_Docker_Laravel 5.4 - Fatal编程技术网

Laravel Docker Windows 403在向composer添加卷后禁止访问

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的新手,我正在尝试将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:
      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中尝试读取有关,也可能与行尾有关