【发布时间】:2016-05-27 19:41:18
【问题描述】:
我正在尝试 dockerize Laravel 5.2 应用程序。为此,我使用以下图片,
php:apache
mysql:5.7
下面是我的docker-compose.yml
web:
build: .
volumes:
- ./:/var/www/html
ports:
- "9899:80"
links:
- db
command : [/usr/sbin/apache2ctl, -D, FOREGROUND]
db:
image: mysql:5.7
volumes:
- /home/data:/var/lib/mysql
environment:
MYSQL_DATABASE: custom
MYSQL_ROOT_PASSWORD: custom
还有我的Dockerfile
FROM php:apache
RUN apt-get update && docker-php-ext-install pdo pdo_mysql
RUN rm -f /etc/apache2/sites-available/000-default.conf
ADD ./settings/000-default.conf /etc/apache2/sites-available
Dockerfile 和 docker-compose.yml 都在 laravel 根目录中。要运行基于 laravel 的应用程序,服务器必须指向 public 文件夹。所以,你可以看到我正在用下面的000-default.conf 文件替换apache2 的默认配置文件,
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
docker-compose up 命令一切正常,但是,当我浏览 localhost:9899 时出现 Forbidden 错误,但 localhost:9899/public 正确启动 laravel 应用程序。这意味着我提供的000-default.conf 没有效果,服务器仍然指向/var/www/html/ 而不是/var/www/html/public。
所以我尝试,exec 进入正在运行的容器以检查 000-default.conf。我可以看到我的文件而不是默认文件。我没有解决这个问题。我希望 apache 考虑我的 000-default.conf 。我希望你们能看到我做错了什么。
【问题讨论】:
标签: php apache docker docker-compose dockerfile