我是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
的目录在哪里?
有人可以帮助解决这个问题吗?提前致谢。
答案 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
并在容器内部四处戳戳。