【发布时间】:2020-08-01 09:13:56
【问题描述】:
我正在尝试使用 docker-compose 加载一个使用 .htaccess 启动的 php 应用程序。
如果我使用 proxypassmatch 它可以工作,但仅适用于一条路线,一旦 url 更改,文件就找不到了(我读到 proxypass/reverseproxy/proxypassmatch)不能与 .htaccess 一起使用...?
如果我使用传统设置,使用虚拟主机,.htaccess 正在工作,但 php 文件不加载,它的内容会出现在屏幕上(无论路径如何)。
我花了这么多时间到处寻找没有任何答案......或者也许改变单个容器 php-httpd 的图像?但我喜欢把它们分开的想法。
如果有人知道如何解决它,那就太好了。
查看 docker-compose 文件
version: "3.2"
services:
php:
build: './php/'
volumes:
- ./MediterPourGrandir/:/var/www/html/
apache:
build: './apache/'
depends_on:
- php
- mysql
ports:
- "80:80"
volumes:
- ./MediterPourGrandir/:/var/www/html/
mysql:
image: mysql:5.6.40
#restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=monsupersite
- MYSQL_PASSWORD=root
ports:
- "3306:3306"
apache Dockerfile
FROM httpd:2.4.33-alpine
RUN apk update; \
apk upgrade;
# Copy apache vhost file to proxy php requests to php-fpm container
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf && \
sed -i 's#AllowOverride [Nn]one#AllowOverride All#' /usr/local/apache2/conf/httpd.conf
COPY demo.apache.conf /usr/local/apache2/conf/demo.apache.conf
RUN echo "Include /usr/local/apache2/conf/demo.apache.conf" \
>> /usr/local/apache2/conf/httpd.conf
apache 配置文件
serverName localhost
<VirtualHost *:80>
DocumentRoot /var/www/html/
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Send apache logs to stdout and stderr
CustomLog /proc/self/fd/1 common
ErrorLog /proc/self/fd/2
</VirtualHost>
和 php Dockerfile
FROM php:7.2.7-fpm-alpine3.7
RUN apk update; \
apk upgrade;
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
【问题讨论】:
标签: php apache docker docker-compose