pin*_*sia 5 php apache docker dockerfile docker-compose
我正在尝试将Laravel 5.2应用程序停靠.为此,我使用以下图像,
php:apache
mysql:5.7
Run Code Online (Sandbox Code Playgroud)
以下是我的 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
Run Code Online (Sandbox Code Playgroud)
和我的 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
Run Code Online (Sandbox Code Playgroud)
双方Dockerfile并docker-compose.yml都在laravel根目录下.要运行基于laravel的应用程序,服务器必须指向public文件夹.所以,你可以看到我apache2用以下000-default.conf文件替换了默认配置文件,
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
一切都运行正常,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.我希望你们能看到我做错了什么.
Apache 不会查看sites-available目录,而是查看sites-enabled目录。您可以ADD将配置文件放入后一个目录,也可以设置符号链接:
ADD ./settings/000-default.conf /etc/apache2/sites-available
RUN ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2887 次 |
| 最近记录: |