Forbidden You don't have permission to access this resource при использовании Docker
Всем привет, недавно начал изучать Docker и столкнулся со следующей проблемой при открытии страницы контейнера в браузере.
Forbidden
You don't have permission to access this resource.
Apache/2.4.61 (Debian) Server at localhost Port 8080
а также вот такое получил в логах контейнера:
2024-08-21 21:03:12 172.18.0.1 - - [21/Aug/2024:18:03:12 +0000] "GET / HTTP/1.1" 403 493 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
2024-08-21 21:03:12 [Wed Aug 21 18:03:12.937792 2024] [autoindex:error] [pid 17:tid 17] [client 172.18.0.1:44598] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive
Из лога понятно, что ошибка из-за того, что не найдены index.php и html файлов, но только где именно указывать путь до этих файлов?
Dockerfile
# Используем официальный PHP образ с Apache
FROM php:8.3-apache
# Устанавливаем зависимости и расширения PHP
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libzip-dev \
unzip \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_mysql mysqli
# Устанавливаем Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Копируем исходный код в контейнер
COPY . /var/www/html
# Указываем рабочий каталог
WORKDIR /var/www/html
# Устанавливаем зависимости Laravel
RUN composer install
# Копируем .env файл
COPY .env.example .env
# Выполняем миграции базы данных
RUN php artisan key:generate
# Открываем порт
EXPOSE 80
# Запускаем Apache
CMD ["apache2-foreground"]
docker-compose.yml
version: '3.8'
services:
# Сервис для PHP с Apache
web:
image: php:8.3-apache
ports:
- "8080:80" # Пробрасываем порт 80 контейнера на порт 8080 хоста
volumes:
- D:/OSPanel/domains/gallery:/var/www/html
networks:
- app-network
# Сервис для MySQL
db:
image: mysql:8.0
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=galleryDB
volumes:
- db_data:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
db_data:
default.conf апаче конфиг файл
ServerRoot "/usr/local/apache2"
Listen 80
ServerName localhost
DocumentRoot "/var/www/html/public"
<Directory "/var/www/html/public">
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ErrorLog /usr/local/apache2/logs/error_log
CustomLog /usr/local/apache2/logs/access_log common