Проблема с подключением базы данных WordPress в mysql

#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