Вопрос или проблема
Я создал приведённый ниже файл docker-compose и использовал официальный образ WordPress для переноса моего сайта с общего хостинга на Docker. Несмотря на то что я использовал стандартный файл .htaccess и добавил exit; в index.php для тестирования, сайт на WordPress всё равно остаётся недоступным. Я также внес необходимые изменения в wp-config. Я не могу произвести дальнейшую отладку, пожалуйста, помогите.
version: '3.1'
services:
wordpress:
container_name: frix_wordpress
build:
context: .
dockerfile: Dockerfile
image: wordpress
restart: always
working_dir: /var/www/html
depends_on:
- db
ports:
- 8099:8082
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- .:/var/www/html
db:
container_name: frix_db
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
Похоже, вы перенаправляете неправильный порт. Таким образом, сайт должен быть доступен по адресу http://localhost:8080
ports:
- 8080:80
Ответ или решение
Для успешного переноса вашего сайта WordPress на Docker, рассмотрим следующие ключевые аспекты. Судя по предоставленной вами конфигурации, возможно, у вас возникли проблемы с настройкой портов, а также с некоторыми другими настройками. Давайте разберемся пошагово.
1. Настройка docker-compose.yml
Ваш файл docker-compose.yml
имеет несколько небольших недостатков. Вам нужно убедиться, что порты правильно сопоставлены, и что вы используете правильные версии образов. Выглядит, что вы используете неправильные порты для доступа к WordPress. Ваш текущий код:
ports:
- 8099:8082
на самом деле должен выглядеть так:
ports:
- 8080:80
Этот код позволяет вам получить доступ к вашему сайту, используя http://localhost:8080
.
2. Пример исправленного файла docker-compose:
Итак, вот исправленная версия вашего docker-compose.yml
:
version: '3.1'
services:
wordpress:
container_name: frix_wordpress
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./wordpress:/var/www/html # Путь к вашей директории WordPress
depends_on:
- db
db:
container_name: frix_db
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
db:
3. Проверка .htaccess
и конфигурации WordPress
Если вы используете .htaccess
, убедитесь, что ваш сервер поддерживает его. В образе WordPress должны быть включены модули Apache, такие как mod_rewrite
. Вы можете протестировать доступ, временно добавив в файл index.php
соответствующий код, например, exit;
, чтобы проверить, работает ли Apache.
4. Настройка wp-config.php
Убедитесь, что в файле wp-config.php
у вас указаны правильные параметры подключения к базе данных. Проверьте, что данные совпадают с теми, что указаны в docker-compose.yml
.
5. Логи контейнеров
Если сайт по-прежнему недоступен, хорошо бы проверить логи контейнеров. Вы можете это сделать, выполнив команду:
docker-compose logs
Это поможет выявить возможные ошибки, которые могут проистекать из самого WordPress или базы данных MySQL.
6. Перезапуск Docker
После всех исправлений обязательно перезапустите контейнеры:
docker-compose down
docker-compose up -d
Заключение
Убедитесь, что все конфигурации выполнены правильно и что все зависимости корректно работают. После внесения изменений, попробуйте получить доступ к вашему сайту снова. Если у вас остаются проблемы, проверьте, действительно ли ваши настройки базы данных и сеть Docker настроены верно.