我正在尝试使用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.confapache配置文件
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发布于 2020-08-07 16:21:26
我终于改变了图像(我不喜欢,但看起来没有人知道如何处理这个,即使在Docker论坛上也是如此……),我使用php:7.2.1-apache,然后它工作得很好。查看docker文件的配置:running-virtual-hosts-in-apache-docker-container
我使用docker-compose将它连接到mysql的映像(就像以前一样)。
version: "3.2"
services:
php-apache:
build:
context: ./apache-php
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"
#volumes:
#- ./var/www/html/'monsupersite (1).sql':/docker-entrypoint-initdb.d/'monsupersite (1).sql'https://stackoverflow.com/questions/63203592
复制相似问题