Docker Apache / PHP Localhost продолжает возвращать ошибку 404 для подкаталогов

Я пытаюсь использовать докер в качестве замены xampp. У меня есть структура каталогов со всеми моими проектами, например так:

Work
|- project_1
|- public_html
|- project_2
|- public_html
|- etc.
|- httpd # this is where config files lie

Я хочу иметь возможность развернуть apache / php через docker и использовать основную папку «Работа» как «htdocs». Когда я получаю доступ к проекту через localhost (например, HTTP: // локальный / project_1 / public_html) оно делает НЕ работать (дает мне ошибку 404), в то время как то же самое прекрасно работает на xampp и mamp. Также индекс каталога показывает хорошо, когда я получаю доступ HTTP: // локальный / project_1 /; Я потратил 4 дня, пытаясь выяснить, что я делаю неправильно, но я не смог. Возможно, проблема в настройке apache, поскольку те же проекты работают с xampp и mamp.

В папке httpd находятся следующие файлы конфигурации докера:

докер-compose.yml:

version: '3'
services:

php:
build: .
image: php:7.2-apache
environment:
ALLOW_OVERRIDE: 'true'
DEBUG: 'true'
ports:
- "80:80"- "443:443"volumes:
- ../:/var/www/html/
- ./apache.conf:/etc/apache2/sites-available/000-default.conf

apache.conf:

ServerName localhost

<VirtualHost *:80>
DocumentRoot /var/www/html
ServerAlias localhost
UseCanonicalName Off

<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Dockerfile:

FROM php:7.2-apache

COPY httpd.conf /usr/local/apache2/conf/httpd.conf

RUN apt-get update && apt-get install -y --fix-missing \
xz-utils \
build-essential \
pkg-config \
git-core \
autoconf \
libjpeg62-turbo-dev \
libsodium-dev \
libpng-dev \
libcurl4-openssl-dev \
libpq-dev \
libpspell-dev \
libsqlite3-dev \
libmagickwand-dev \
libzip-dev \
imagemagick \
subversion \
python \
g++ \
curl \
vim \
wget \
netcat \
chrpath

RUN docker-php-ext-install \
iconv \
-j$(nproc) sodium \
opcache \
curl \
gd \
mysqli \
pdo \
pdo_pgsql \
pdo_mysql \
pdo_sqlite \
pspell \
pgsql \
soap \
zip \
&& docker-php-ext-configure zip --with-libzip \
&& docker-php-ext-install zip

RUN pecl install imagick && docker-php-ext-enable imagick

WORKDIR /tmp
RUN wget https://getcomposer.org/composer.phar
RUN mv composer.phar /bin/composer
RUN chmod 700 /bin/composer

RUN apt-get clean
RUN apt-get autoremove -y
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/src/*

RUN a2enmod rewrite headers cache cache_disk expires vhost_alias userdir
RUN service apache2 restart
RUN service apache-htcacheclean start

RUN usermod -u 1000 www-data
RUN usermod -G staff www-data

WORKDIR /var/www/html

CMD ["apache2-foreground"]

EXPOSE 80

httpd.conf:

ServerRoot "/etc/apache2"ServerAdmin postmaster@localhost
ServerName localhost:80

Listen *:80

LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_lock_module modules/mod_dav_lock.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule speling_module modules/mod_speling.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
LoadModule version_module modules/mod_version.so
LoadModule userdir_module modules/mod_userdir.so

<IfModule unixd_module>
User www-data
Group www-data
</IfModule>

DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>

<Files ".ht*">
Require all denied
</Files>

ErrorLog /var/log/apache2/error.log

LogLevel warn

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

CustomLog /var/log/apache2/access.log combined
</IfModule>

<IfModule headers_module>
RequestHeader unset Proxy early
</IfModule>

<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi .pl .asp
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>

<IfModule mime_magic_module>
MIMEMagicFile "conf/magic"</IfModule>


Include conf/etc/httpd-mpm.conf
Include conf/etc/httpd-multilang-errordoc.conf
Include conf/etc/httpd-autoindex.conf
Include conf/etc/httpd-languages.conf
Include conf/etc/httpd-userdir.conf
Include conf/etc/httpd-info.conf
Include conf/etc/httpd-vhosts.conf
Include "conf/etc/httpd-proxy.conf"Include "conf/etc/httpd-default.conf"
<IfModule proxy_html_module>
Include conf/etc/proxy-html.conf
</IfModule>

Include conf/etc/httpd-ssl.conf

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

AcceptFilter http none
AcceptFilter https none

<IfModule mod_proxy.c>
<IfModule mod_proxy_ajp.c>
Include "conf/etc/httpd-ajp.conf"</IfModule>
</IfModule>

.htaccess (например, в каталоге / project_1 / public_html):

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /project_1/public_html

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^.*\.(css|jpe?g|gif|png|js|ico|ttf|woff|woff2)$ [NC]

RewriteRule ^ index.php [QSA,L]
</IfModule>

Я был бы очень признателен за помощь в этом отношении. Я не очень хорошо разбираюсь в apache, и только начинаю с докером. Заранее спасибо!

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector