Я новичок здесь, и это мой первый вопрос, поэтому скажите мне, если что-то не так в том, как я выразился.
Итак, вот проблема: я создаю стек LAMP с 3 отдельными контейнерами для nginx, maiadb и wordpress.
Кажется, что весь nginx и php-fpm работают хорошо, так как я могу получить доступ к индексу сайта и обрабатывать страницы php. Mdb создает базу данных wordpress и создает пользователя «wordpress@wordpress-php» со всеми привилегиями.
Когда я захожу на сайт для установки, все начинает идти не так, я застреваю с сообщением: «Ошибка установления соединения с базой данных».
Вот мой файл wp-config.php, который я копирую в каталог wordpress внутри контейнера:
<?php
4 define( 'DB_NAME', 'wordpress' );
7 define( 'DB_USER', 'wordpress' );
10 define( 'DB_PASSWORD', 'wordpress' );
15 define( 'DB_HOST', 'mariadb' );
16 define( 'DB_CHARSET', 'utf8' );
17
19 define( 'DB_COLLATE', '' );
20 define('AUTHOR', 'yotillar');
21
22 // Authentication unique keys and salts.
23 define( 'AUTH_KEY', 'key' );
24 define( 'SECURE_AUTH_KEY', 'key' );
25 define( 'LOGGED_IN_KEY', 'key' );
26 define( 'NONCE_KEY', 'key' );
27 define( 'AUTH_SALT', 'salt' );
28 define( 'SECURE_AUTH_SALT', 'salt' );
29 define( 'LOGGED_IN_SALT', 'salt' );
30 define( 'NONCE_SALT', 'salt' );
31
38 $table_prefix = 'wp_';
51 define( 'WP_DEBUG', true );
52 define( 'WP_DEBUG_LOG', true );
53 define( 'WP_DEBUG_DISPLAY', false );
59 if ( ! defined( 'ABSPATH' ) ) {
60 »···define( 'ABSPATH', __DIR__ . '/' );
61 }
64 require_once ABSPATH . 'wp-settings.php';
65 ?>
Вот мой docker-compose.yaml:
версия: "3.5"
2
3 сети:
4 фронт-сеть:
5 водитель: мост
6 прикрепляемый: ложный
7 обратная сеть:
8 водитель: мост
9 прикрепляемый: ложный
10
11 томов:
12 mdb-данные:
13 вордпресс:
14
15 услуг:
16
17 нгинкс:
18 зависит от:
19 - wordpress-php
20 сборка: "./services/nginx"
21 изображение: nginx:mytag
22 тома:
23 - wordpress:/var/www/myserver/wordpress:rw
24 - "../logs/nginx_logs:/var/log/nginx:rw"
25 перезапуск: при отказе
26 портов:
27 - "80:80"
28 - "443:443"
29 разоблачить:
30 - 9000
31 сеть:
32 - передняя сеть
33
34
35 wordpress-php:
36 зависит от:
37 - мариадб
38 сборка: "./services/wordpress"
39 изображение: wordpress-php:mytag
40 томов:
41 - wordpress:/var/www/myserver/wordpress:rw
42 - "../logs/php7.3-fpm.log:/var/log/php7.3-fpm.log:rw"
43 перезапуск: при отказе
44 среда:
45 — WORDPRESS_DB_HOST=mariadb:3306
46 - WORDPRESS_DB_NAME=wordpress
45 - WORDPRESS_DB_USER=wordpress
48 - WORDPRESS_DB_PASSWORD=wordpress
50 разоблачить:
51 - 3306
52 - 9000
53 сети:
54 - передняя сеть
55 - задняя сеть
56
57
58 мариадб:
59 сборка: "./services/mariadb"
60 изображение: mariadb:mytag
61 том:
62 - mdb-данные:/var/lib/mysql:rw
63 - "../logs/mariadb_logs/error.log:/var/log/mysql/error.log"
64 перезапуск: при сбое
65 среда:
66 - MYSQL_DATABASE = wordpress
67 - MYSQL_USER=wordpress
68 – MYSQL_USER_PASSWORD=wordpress
69 - MYSQL_ROOT_PASSWORD=корень
70 разоблачить:
71 - 3306
72 сети:
73 - задняя сеть
74
Я установил адрес привязки mariadb на 0.0.0.0 в ./etc/mysql/mariadb.conf.d/50-se rver.cnf и ./etc/mysql/my.cnf, чтобы убедиться, что th db действительно слушает с каждого айпи.
Я думаю, что проблема связана с wp-config.php , но, как я понял, в среде создания докеров вы можете ссылаться на каждый контейнер с его именем вместо ip, и я не знаю, как я могу получить IP-адрес mariadb из wordpress -php.
Пожалуйста, помоги мне,
заранее спасибо всем, кто дочитал до этого места! ^^