質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

1528閲覧

WordPressにアクセスするとError establishing a database connection

pecchan

総合スコア592

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/08/20 21:59

書籍の「docker基礎からの構築」で勉強してます。
第7章にWordPressコンテナとMySQLコンテナを使い、WordPressを表示する内容があります。

以下のようにコンテナを起動しました。
※ボリュームとネットワークは事前に作成済み

WordPressコンテナ

$ docker run --name wpapp -dit -p 8080:80 -e WORDPRESS_DB_HOST=wpdb -e WORDPRESS_DB_NAME=db -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=user --net wpnet wordpress

MySQLコンテナ

docker run --name wpdb -dit -v wp_db_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db -e MYSQL_USER=user -e MYSQL_PASSWORD=user --net wpnet mysql:5.7

「localhost:8080」にアクセスするとブラウザに表題のエラーが表示されました。

そこでdocker logsを確認しました。

$ docker logs wpapp WordPress not found in /var/www/html - copying now... Complete! WordPress has been successfully copied to /var/www/html No 'wp-config.php' found in /var/www/html, but 'WORDPRESS_...' variables supplied; copying 'wp-config-docker.php' (WORDPRESS_DB_HOST WORDPRESS_DB_NAME WORDPRESS_DB_PASSWORD WORDPRESS_DB_USER) AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.3. Set the 'ServerName' directive globally to suppress this message AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.3. Set the 'ServerName' directive globally to suppress this message [Fri Aug 20 10:36:25.281683 2021] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.48 (Debian) PHP/7.4.22 configured -- resuming normal operations [Fri Aug 20 10:36:25.282018 2021] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND' 172.19.0.1 - - [20/Aug/2021:10:37:09 +0000] "GET / HTTP/1.1" 500 2834 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"

####試したこと

ログのこの部分に着目し調べました。

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.3. Set the 'ServerName' directive globally to suppress this message

'ServerName' directive globally to suppress this messageというエラーが
ここによると、「httpd.confにホスト名(ServerName )が設定されていないことが原因」とあります。

以下のようにhttp.confを編集するよう書いてありました。
Apacheのバージョンは「2.4.20」

# vi /usr/local/apache2/conf/httpd.conf

ですが当方の環境には「apache2」ディレクトリが見当たりませんでした。

ls /usr/local/ bin etc games include lib man php sbin share src var

apacheのバージョンが異なるのかと思い調べると、そこまで異なってませんでした。

root@d6ec05f235fa:/var/www/html# apachectl -v Server version: Apache/2.4.48 (Debian) Server built: 2021-08-12T11:51:47

ここでいったんhttp.confは諦めて、単純に接続情報の入力間違いを確認しようと思いました。

「wp-config.php」を確認しました。
すると下記のような初期状態?で、コンテナ起動時に設定した接続情報ではありませんでした。

define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') ); define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'example username') ); define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'example password') );

なのでコンテナ起動時に合わせて編集してみました。

define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'db') ); define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'user') ); define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'user') );

これでも表題のエラーで変わりませんでした。
エラーログも変わりないようです。

どうすれば繋がるでしょうか?
分かる方教えていだけると幸いです。
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問