向作曲家添加卷后的Docker Windows 403禁止访问

时间:2018-08-14 09:49:59

标签: laravel docker laravel-5.4

我是Docker的新手,我正在尝试将Docker与PHP链接起来。因此,我遵循本文的教程:https://bitpress.io/simple-approach-using-docker-with-php/,一切运行良好。

不幸的是,当我试图将本地开发卷添加到docker-compose.yml文件中时,无法打开网站。它显示 403 Forbidden 您无权访问此服务器上的/。位于192.168.99.100端口8080的Apache / 2.4.10(Debian)服务器

我的docker-composer.yml:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: laravel-docker
    ports:
      - 8080:80
    volumes:
     - .:/srv/app

Dockfile:

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

虚拟主机:

<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>

排除卷后,一切正常。我正在使用Windows 10 Home Basic。顺便说一句,:/srv/app的目录在哪里?

有人可以帮助解决这个问题吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

/srv/app是docker容器中的目录。

volume标签指定如何将文件系统从容器外部安装到容器内部

<windows machine>:<inside container>

因此,您拥有的定义会将根目录(docker-compose文件所在的目录)以及该目录的所有子文件夹安装到容器中的/srv/app目录中。

.:/srv/app

您的问题是,您在vhost.conf文件中配置为提供php页面服务的文件夹是/srv/app/public,而在本地计算机上,您可能没有文件{{1 }}

不是您没有权限,而是没有文件可提供。

如果要检查容器中的内容,可以运行public/index.php并在容器内部四处戳戳。