J'ai créé un petit docker-compose.yml
qui fonctionnait comme un charme pour déployer de petites instances de WordPress. Cela ressemble à ceci:
wordpress:
image: wordpress:latest
links:
- mysql
ports:
- "1234:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: "password"
WORDPRESS_DB_Host: mariadb
MYSQL_PORT_3306_TCP: 3306
volumes:
- /srv/wordpress/:/var/www/html/
mysql:
image: mariadb:latest
mem_limit: 256m
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "password"
volumes:
- /srv/mariadb:/var/lib/mysql
Mais quand je le lance maintenant (peut-être depuis la mise à jour de Docker vers Docker version 1.9.1, build a34a1d5
), cela échoue.
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
wordpress_1 |
wordpress_1 | MySQL Connection Error: (2002) Connection refused
Quand je cat /etc/hosts
du wordpress_1
il y a des entrées pour MySQL:
172.17.0.10 mysql 12a564fdbc56 mariadb
et je suis capable de cingler le serveur MariaDB.
Lorsque je docker-compose up
, WordPress est installé et, après plusieurs redémarrages, le conteneur MariaDB affiche:
Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
Qui devrait indiquer qu'il fonctionne, n'est-ce pas?
Comment obtenir que WordPress puisse se connecter au conteneur MariaDB?
La raison de ce comportement était probablement liée à une mise à jour récente du noyau et du menu fixe. J'ai reconnu plusieurs autres problèmes de connexion dans d'autres configurations composées avec docker. Par conséquent, j'ai redémarré le serveur (pas seulement le service Docker) et je n'ai pas eu de problèmes de ce genre depuis.
Pour résoudre ce problème, la première chose à faire est:
Ajoutez le code suivant aux conteneurs wordpress & database (dans le fichier docker-compose):
restart: unless-stopped
Cela garantira que votre base de données est démarrée et initiée avant que WordPress Container ne tente de s'y connecter. Puis redémarrez le moteur de docker
Sudo restart docker
ou (pour Ubuntu 15+)
Sudo service docker restart
Voici la configuration complète qui a fonctionné pour moi, pour configurer Wordpress avec MariaDB:
version: '2'
services:
wordpress:
image: wordpress:latest
links:
- database:mariadb
environment:
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_NAME=mydbname
- WORDPRESS_TABLE_PREFIX=ab_
- WORDPRESS_DB_PASSWORD=password
- WORDPRESS_DB_Host=mariadb
- MYSQL_PORT_3306_TCP=3306
restart: unless-stopped
ports:
- "test.dev:80:80"
working_dir: /var/www/html
volumes:
- ./wordpress/:/var/www/html/
database:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=mydbname
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=password
restart: unless-stopped
ports:
- "3306:3306"
J'avais presque le même problème, mais le simple redémarrage du conteneur Wordpress m'a sauvé:
$ docker restart wordpress
J'espère que cela aidera beaucoup de gens.
Moi aussi j'ai eu des problèmes ici. J'utilisais docker-compos pour configurer plusieurs sites Web wordpress sur un (micro) serveur privé virtuel, y compris phpmyadmin
et jwilder/nginx-proxy
en tant que contrôleur.
$ docker logs XXXX
aidera à indiquer les domaines de préoccupation. Dans mon cas, les bases de données MariaDB continueraient à redémarrer tout le temps.
Il s’avère que tout cela ne tient pas sur un service micro 512M Single CPU. Je n'ai jamais reçu de messages d'erreur m'indiquant directement que la taille était un problème, mais après avoir ajouté des éléments, je me suis rendu compte que lorsque toutes les bases de données démarraient, je manquais de mémoire. Une mise à niveau vers 1 Go, 1 service de processeur fonctionnait parfaitement.
J'utilisais votre docker-compose.yml, avait le même problème. Juste redémarrer n'a pas résolu. Après presque une heure de recherche dans les journaux, j'ai constaté que le problème était le suivant: le service wordpress
a commencé à se connecter au service mysql
avant qu'il ne soit complètement démarré. Ajouter simplement depend_on ne vous aidera pas. Docker Compose attendre le conteneur X avant de démarrer Y
la solution consiste à démarrer le serveur db
avant Up. Quand il a complètement démarré, lancez docker-compose up
. Ou utilisez simplement un service externe.
Dans mon cas, j'utilise Mysql (pas MariaDb) mais j'ai eu le même problème. Après la mise à niveau de la version de MySQL, tout fonctionne correctement.
Vous pouvez voir ma configuration open-source de docker-compose: https://github.com/rimiti/wordpress-dockerized-environment