#php #mysql #wordpress #docker
Вопрос:
Я попытался настроить WordPress в CentOS (8.4.2105), но в итоге при запуске контейнера wordpress docker возникла проблема: «Ошибка при подключении к базе данных».
Это тот шаг, который я сделал:
1. докер-составьте.yaml
version: '3.2'
services:
# Database
db:
image: mysql:5.7
volumes: ['/var/lib/mysql']
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wpsite
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8000:80'
restart: always
volumes: ['./:/var/www/html/example.com']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
networks:
- wpsite
networks:
wpsite:
2. Проверьте подключение к БД с помощью PHP-кода
Он возвращает сбой
<?php
$link = mysqli_connect('db', 'wordpress', 'wordpress', 'wordpress', '3306');
if (!$link) {
echo 'failed';
return;
}
echo 'Connected successfully';
mysqli_close($link);
?>
Понятно, что wordpress не может запуститься, потому что php-код уже не смог установить соединение с контейнером mysql, запущенным, как было протестировано выше. Однако я все еще могу войти в систему или создать новую базу данных в cmd cli. Я также следую инструкциям по установке, но все еще не могу понять, в чем причина проблемы с подключением к базе данных.
Это сайт, на который я подписываюсь: https://docs.docker.com/samples/wordpress/
В чем основная причина и как я могу ее устранить ? Это из-за контейнера docker mysql ? Кажется, что проблема устранена, но журналов для проверки нет.
Ответ №1:
Что произойдет, если вы возьмете:
environment:
MYSQL_ROOT_PASSWORD: password
Так
mysqli_connect(host, username, password, dbname, port, socket)
$link = mysqli_connect('db', 'wordpress', 'password', 'wordpress', '3306');
И, возможно, измените это в своем докере-составьте.yaml
WORDPRESS_DB_HOST: db
Комментарии:
1. Это тоже не работает. Возможно, это из-за сети докеров, я думаю. Я пытаюсь удалить свойство «сеть» в docker compose