I’ve created a small docker-compose.yml
which used to work like a charm to deploy small WordPress instances. It looks like this:
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
But when I start it now (maybe since docker update to Docker version 1.9.1, build a34a1d5
), it fails
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
wordpress_1 |
wordpress_1 | MySQL Connection Error: (2002) Connection refused
When I cat /etc/hosts
of the wordpress_1
there are entries for MySQL:
172.17.0.10 mysql 12a564fdbc56 mariadb
and I am able to ping the MariaDB server.
When I docker-compose up
, WordPress gets installed and after several restarts the MariaDB container prints:
Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
Which schould indicate it to be running, isn’t it?
How do I get the WordPress to be able to connect to the MariaDB container?
To fix this issue the first thing to do is:
Add the following code to wordpress & database containers (in the docker-compose file):
This will make sure you Database is started and intialized before wordpress container trying to connect to it. Then restart docker engine
or (for ubuntu 15+)
Here the full configuration that worked for me, to setup wordpress with MariaDB:
The reason for this behaviour probably was related to a recent kernel and docker update. I recognized several other connection issues in other docker-compose setups. Therefore I restarted the server (not just the docker service) and didn’t have had any issues like this ever since.
I had almost same problem, but just restarting the WordPress container saved me:
I hope this help many people.
I too had troubles here. I was using docker-compose to set up multiple wordpress websites on a single (micro) Virtual Private Server, including
phpmyadmin
andjwilder/nginx-proxy
as a controller.$ docker logs XXXX
will help indicate areas of concern. In my case, the MariaDB databases would keep restarting all the time.It turns out that all that stuff just wouldn’t fit on a micro 512M Single CPU service. I never received error messages that told me directly that size was an issue, but after adding things up, I realized that when all the databases were starting up, I was running out of memory. An upgrade to 1Gb, 1 CPU service worked just fine.
I was using your docker-compose.yml, had the same problem. Just restarting didn’t fix. After nearly an hour of researching the logs, I found the problem was:
wordpress
service started connectingmysql
service before it had fully started. Simply adding depends_on won’t help.Docker Compose wait for container X before starting Ythe work around could be start the
db
server before Up. When it has fully started, rundocker-compose up
. Or just use external service.This simply means you are trying to connect to the wrong host. In order to use this in localhost just use the name of your service as the database host example in your case, it would be
mysql
you can fix this by specifying the name of the localhost with a default variable like thisMYSQL_ROOT_HOST: localhost
In my case, I’m using Mysql (not MariaDb) but I had the same problem.
After upgrading the MySQL version, it’s works fine.
You can see my open source docker-compose configuration: https://github.com/rimiti/wordpress-dockerized-environment