Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Максим Лео Знаток (365), на голосовании 7 месяцев назад
Я запулил 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

Голосование за лучший ответ
Татьяна Просветленный (36377) 8 месяцев назад
Проблема, с которой вы столкнулись при разворачивании 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
Вася Пупкин Мудрец (14921) 8 месяцев назад
У меня только с oracle есть опыт разворачивания контейнера, к сожалению
Sergio 2.1 Оракул (67224) 8 месяцев назад
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 контейнеры.
Саня Семенов Оракул (60497) 8 месяцев назад
да, Docker контейнеры по умолчанию сильно закрытые и чтобы достучаться в них порты открывать надо руками
Похожие вопросы