Docker ComposeでWordPressを構築したら「connection refused」エラーが発生!原因と解決策
Docker Composeで構築したWordPressに接続できない!「connection refused」エラーの原因と解決策
Docker Composeを使ってWordPressとMariaDBを構築した際、WordPressからMariaDBに接続できず、「connection refused」エラーが発生するケースがあります。このエラーは、接続情報の設定ミスやネットワークの問題など、様々な原因が考えられます。
原因
このエラーが発生する主な原因は以下の通りです。
- 接続情報の誤り:
- データベース名: WordPressの設定ファイル (
wp-config.php
) に記載されているデータベース名が、MariaDBのデータベース名と一致していない。
- データベース名: WordPressの設定ファイル (
- ネットワークの問題:
- ポートの設定: MariaDBのポート設定が誤っている可能性があります。
- MariaDBの起動状況:
- MariaDBが起動していない: MariaDBが起動していない場合、接続できません。
- MariaDBの設定: MariaDBの設定ファイル (
my.cnf
) に誤りがあり、接続が拒否されている可能性があります。
解決策
以下の手順で問題を解決できます。
接続情報の確認
WordPressの設定ファイル (wp-config.php
) と、MariaDBの設定ファイル (my.cnf
) を確認し、以下の項目が一致していることを確認します。
- データベース名
- ユーザー名
- パスワード
- ホスト名
ネットワークの確認
docker network ls
コマンドでネットワークの一覧を表示し、WordPressとMariaDBが同じネットワークに接続されていることを確認します。
MariaDBの起動状況の確認
docker ps
コマンドでMariaDBが起動していることを確認します。
MariaDBの設定ファイル (my.cnf
) を確認し、以下の設定が正しく設定されていることを確認します。
bind-address
: 接続を受け付けるIPアドレスport
: 接続ポート
その他の確認事項
docker-compose logs
コマンドで、WordPressとMariaDBのログを確認し、エラーメッセージがないか確認します。- 必要に応じて、ファイアウォールの設定を確認します。
version: '3'
services:
wordpress:
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wp-config.php
<?php
/**
* WordPress Database Configuration
*/
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wordpress' );
define( 'DB_PASSWORD', 'wordpress' );
define( 'DB_HOST', 'db' );
/**
* WordPress Database Table Prefix
*/
$table_prefix = 'wp_';
/**
* WordPress Localized Language
*/
define( 'WPLANG', '' );
/**
* For developers: WordPress debugging mode.
*/
define( 'WP_DEBUG', false );
/**
* Authentication Unique Keys and Salts.
*/
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
/**
* Absolute path to the WordPress directory.
*/
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
/**
* Sets up WordPress vars and included files.
*/
require_once( ABSPATH . 'wp-settings.php' );
補足
上記のコードは、サンプルコードです。環境に合わせて変更する必要があります。
docker-compose.yml
ファイル:WORDPRESS_DB_HOST
,MYSQL_HOST
: MariaDBのホスト名
wp-config.php
ファイル:DB_HOST
: MariaDBのホスト名
注意事項
- コードを実行する前に、必ずバックアップを取ってください。
他の方法
WordPressのデータベース接続設定画面で接続情報を確認する
WordPressの管理画面にログインし、「ツール」→「データベース」→「接続設定」の画面で、以下の項目が正しく設定されていることを確認します。
MariaDBのコンソールに接続して接続を確認する
docker exec -it db bash
コマンドでMariaDBのコンソールに接続し、以下のコマンドを実行して接続を確認します。
mysql -u wordpress -pwordpress -D wordpress
Dockerネットワークのトラブルシューティングを行う
Dockerネットワークに問題がある場合は、以下のコマンドを実行してネットワークの状態を確認できます。
docker network inspect <ネットワーク名>
Dockerのログを確認する
専門家に相談する
上記の方法で問題が解決できない場合は、専門家に相談することを検討してください。
wordpress docker mariadb