Вопрос Не получается развернуть php сайт на docker

Регистрация
12 Дек 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Я запулил php,phpmyadmin.mysql. Но у меня сайт не открывается, пишет, что порт как будто бы занят хотя это не так.

Ошибка:

Forbidden



You don't have permission to access this resource.

Apache/2.4.57 (Debian) Server at local host Port 8080



PhpmyAdmin тоже не работает, После входа происходит ошибка:

mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'172.18.0.4' (using password: YES)



Dockerfile:

FROM php:8.3.4-apache

COPY ./ /var/www/html/

EXPOSE 80



Docker-compose.yml:

version: '3'



services:

php:

build:

context: .

dockerfile: Dockerfile

ports:

- "8080:80"



mysql:

image: mysql:latest

environment:

MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'



volumes:

- ./mysql-data:/var/lib/mysql



phpmyadmin:

image: phpmyadmin:latest

links:

- mysql

ports:

- "8081:80"

environment:

PMA_HOST: mysql

MYSQL_ROOT_PASSWORD: admin



78816672_5e8b4b6a7b3da62de17d94e4e92ad1cf_800.png

 
У меня только с oracle есть опыт разворачивания контейнера, к сожалению
 
Проблема, с которой вы столкнулись при разворачивании PHP сайта на Docker, связана с разрешениями и настройками доступа. Давайте разберемся с каждой из проблем по отдельности:
Ошибка 1: Forbidden - You don't have permission to access this resource
Эта ошибка возникает из-за неправильных разрешений на файлы и директории внутри контейнера. Для исправления этой проблемы вам нужно установить правильные разрешения на каталог /var/www/html/ внутри контейнера. Вы можете сделать это, добавив следующую команду в ваш Dockerfile перед EXPOSE 80: RUN chown -R www-data:www-data /var/www/html/ Ошибка 2: mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'172.18.0.4' (using password: YES)
Эта ошибка возникает из-за неправильной конфигурации доступа к базе данных MySQL для PhpMyAdmin. Для исправления этой проблемы вам нужно установить правильные параметры доступа в вашем docker-compose.yml для сервиса phpmyadmin. Вот как это можно сделать:
yaml
phpmyadmin: phpmyadmin:
image: phpmyadmin:latest
links:
- mysql
ports:
- "8081:80"
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: admin
MYSQL_USER: root
MYSQL_PASSWORD: admin
 
1. Ошибка Apache: Forbidden

Решение:
- Убедитесь, что все файлы и каталоги внутри /var/www/html/ имеют правильные разрешения. Обычно достаточно, чтобы файлы были доступны для чтения всем пользователям, и чтобы каталоги были доступны для исполнения.
- Можно добавить команды в ваш Dockerfile для установки правильных разрешений, например: RUN chown -R www-www-data /var/www/html/ && \
chmod -R 755 /var/www/html/
2. Ошибка подключения к MySQL из phpMyAdmin

Решение:
- В вашем docker-compose.yml вы используете переменную MYSQL_ROOT_PASSWORD: admin для сервиса phpmyadmin, но не указываете ее для сервиса mysql. Вам нужно добавить эту же переменную в секцию environment сервиса mysql, чтобы установить пароль для пользователя root: mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - Убедитесь, что вы используете верный пароль при попытке входа через phpMyAdmin.
- Убедитесь, что в настройках phpMyAdmin указан верный хост (PMA_HOST: mysql). Это должно соответствовать имени сервиса mysql в вашем docker-compose.yml.

Попробуйте внести изменения и перезапустить ваш Docker контейнеры.
 
Назад
Сверху