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

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

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

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

Docker

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

Q&A

解決済

2回答

415閲覧

Dockerで初回起動時に「Error establishing a database connection」

feeling_jumper

総合スコア20

WordPress

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

Docker

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

0グッド

0クリップ

投稿2024/08/24 09:51

編集2024/08/24 22:36

実現したいこと

ローカルにDockerを使用してWordPressを設置しようとしています。しかし、http://localhost:8080/を開いても「Error establishing a database connection」と表示されてしまいます。

過去にDockerで別のWordPressを立ち上げしたことがあり、その履歴などをきちんと消せていないのかもしれません。下記のようなコマンドを、どのタイミングで使うのかが理解できず、Docker自体をアンインストールしたり、色々試したのですが、改善できずにいます。

$ docker-compose up -d
$ docker-compose down
$ docker stop
$ docker volume prune -a
$ docker-compose build

(開発環境)
M1 MacBook Air
Ventura 13.5.1
Docker version 27.1.2

docker-compose.ymlは下記のように記載しています。

version: '4' services: db_2: platform: linux/x86_64 image: mysql:5.7 container_name: db_2 hostname: db_2 volumes: - db_data:/var/lib/mysql restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=nj89td!4?psd - MYSQL_DATABASE=wordpress - MYSQL_USER=pro3rbjwp - MYSQL_PASSWORD=nj89td!4?psd wordpress: depends_on: - db_2 image: wordpress:latest container_name: wordpress volumes: - ./wp:/var/www/html ports: - "8080:80" expose: - 80 restart: unless-stopped environment: - WORDPRESS_DB_HOST=db_2 - WORDPRESS_DB_USER=pro3rbjwp - WORDPRESS_DB_NAME=wordpress - WORDPRESS_DB_PASSWORD=nj89td!4?psd volumes: db_data:

dockerはこんな感じです
イメージ説明

何を試しても改善ない為、どなたか教えていただけないでしょうか。

発生している問題・分からないこと

http://localhost:8080/を開くと、「Error establishing a database connection」

エラーメッセージ

error

1Error establishing a database connection

該当のソースコード

version: '4' services: db_2: platform: linux/x86_64 image: mysql:5.7 container_name: db_2 hostname: db_2 volumes: - db_data:/var/lib/mysql restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=nj89td!4?psd - MYSQL_DATABASE=wordpress - MYSQL_USER=pro3rbjwp - MYSQL_PASSWORD=nj89td!4?psd wordpress: depends_on: - db_2 image: wordpress:latest container_name: wordpress volumes: - ./wp:/var/www/html ports: - "8080:80" expose: - 80 restart: unless-stopped environment: - WORDPRESS_DB_HOST=db_2 - WORDPRESS_DB_USER=pro3rbjwp - WORDPRESS_DB_NAME=wordpress - WORDPRESS_DB_PASSWORD=nj89td!4?psd volumes: db_data:

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

改善しませんでした。

補足

過去にDockerで別のWordPressを立ち上げしたことがあり、その履歴などをきちんと消せていないのかもしれません。下記のようなコマンドを、どのタイミングで使うのかが理解できず、Docker自体をアンインストールしたり、色々試したのですが、改善できずにいます。

$ docker-compose up -d
$ docker-compose down
$ docker stop
$ docker volume prune -a
$ docker-compose build

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

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

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

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

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

hqf00342

2024/08/24 11:36 編集

composeファイルは見たところおかしくなさそうですし、このファイルで Linux でも docker for windowsでも動作しますね。 mac環境ではわかりませんが、一度イメージやコンテナ、ボリュームを全部消してから再度やってみてはいかがでしょうか。
feeling_jumper

2024/08/24 22:27

早速ありがとうございます。同じソースコードでMacだけうまくいかず、WindowsPCですと正常にWordPressの言語設定の画面がでてきます。 イメージやコンテナ、ボリュームなどの消し方なのですが、これはどこから削除するのが正しいでしょうか? ブログなどをみますと、方法がバラバラで、実は前にいくつかDockerを使ったことがあり、その設定の履歴などが残っているのが原因かなと思い、Docker自体をアンインストールしたり、未使用のイメージを削除したりは何度か試したのですが、方法が違うのか改善しませんでした。 1からやり直す場合のDockerの正しい削除方法はを教えていただけますと助かります。
bsdfan

2024/08/25 00:49

docker-compose down -v のように、"-v" オプションをつけるとボリュームまで削除されます。
hqf00342

2024/08/25 01:32

1つ1つ 「docker-compose rm -f」や「docker rm ~」「docker rmi ~」などで消していくか、 他にコンテナがなければこのあたりで全部消えるかと思います。 docker container prune docker image prune docker volume prune
guest

回答2

0

一度別の設定で起動したあとにdocker-compose.ymlを変更しているのではないでしょうか。
WordPressのコンフィグが生成されたあとは環境変数は無関係になるので、./wp/wp-config.php の内容が正しいかを確認してみてください。

追記:
dockerのWordPressイメージのwp-config.phpは環境変数から設定を読み込むようなので、そのままで良い確率が高そうです。
db_dataボリュームをマウントしてデータベースを永続化していますので、db_2のコンテナは一度起動後にenvironmentを変更しても、データベースには反映されません。

MySQLのデータを削除して構わない状況でしたら、

docker compose down -v

を実行して db_dataボリュームを削除、その後に再度 up のコマンドを実行するのが簡単です。
手動で修正するのであればmysqlコンテナでSQLを実行してユーザー情報を修正する必要があります。

投稿2024/08/24 12:56

編集2024/08/25 00:04
Eggpan

総合スコア3205

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

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

feeling_jumper

2024/08/24 22:29

回答ありがとうございます。ご指摘の通り、起動後に、docker-compose.ymlを変更している気がします。この場合は、何かコマンドで実行しなければいけないことがありますでしょうか? ※wp-config.phpの内容も後ほど添付いたします。
guest

0

自己解決

2024.9.1
・$ docker compose down -v
・Docker DesktopからVolumesやImagesを削除
・再度、$ docker-compose up -d実行するも改善せず

(解決方法)
mysqlを5.4から8.0に更新して、Docker Desktopを再起動すると改善されました。

イメージ説明

イメージ説明

回答いただいた方、本当にありがとうございました。

投稿2024/08/31 18:12

feeling_jumper

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問