お助け人.COM

お助け案件「No2」 DockerでWordpress構築でデータベースの接続が上手く行かない!エラーが出る

DockerでWordpressを構築する場合 ① MySQL の準備 ② Wordpress のPHPソースの準備 ③ セットアップ とう流れが標準ですが「MySQLのホスト名は〇〇にしたい」「データベース名は○○にしたい」等の場合の Docker run のパラメータについて お助けです。

ポイント:

docker run --link <DBのコンテナ名>:MySQLのホスト名 が ポイントになりました。

又MySQLのコンテナのホスト名は コンテナIDでした。コンテナIDは docker ps で確認出来ますので場合によっては コンテナID をMySQLのホスト名としても良い訳です。

Docker hub の 公式リポジトリー等の 記載

docker pull で公式リポジトリーのイメージを Pull したとします。

では docker run は

docker run --name <任意の名前 dbsv1 > -e MYSQL_ROOT_PASSWORD=<秘密のパスワード> -d mysql:<tag 5.7.23とか>

次に  dbsv1  という名前で作成したMySQLのコンテナと WordpressのコンテナをLinkします

docker run --name <任意の名前 apsv1 > --link <上でrunした名前 dbsv1 >:mysql -d -p 8080:80 wordpress:<tag php7.2 など>

動かすと http://localhost:8080   すぐサイトの構築設定になります。

もう少し具体的に書くと
前提: docker イメージは mysql:5.7.23    wordpress:php7.2 Mysqlは dbsv1 MySQLのroot パスワードを pass123 Wordpressのコンテナ名をapsv1  Link するホスト名を mysql  とすると wordpress のコンテナをRunする時に wordpress という標準のデータベースを作ってるようです。 これを踏まえて もうちど コンテナ作成のまでの一連の流れを 書きだします。

  1. docker pull mysql:5.7.23
  2. docker pull wordpress:php7.2
  3. docker run --name dbsv1 -e MYSQL_ROOT_PASSWORD=pass123 -d mysql:5.7.23
  4. docker run --name apsv1 --link dbsv1:mysql -d -p 8080:80 wordpress:php7.2

例えば Windows10  のローカルで docker を使っていれば http://localhost:8080  で 言語を指定すると すぐ ようこそ の画面でサイトの設定画面になります。

ここで 前提を MySQLのホストは コンテナの名前と同じでは無くては だめだ!

データベースはデフォルト以外でなくてはだめ! wp-mydb にする 要望がでたら

ローカルには apache等のサーバーは入ってないから http://localhost  で やりたい

  1. docker pull mysql:5.7.23
  2. docker pull wordpress:php7.2
  3. docker run --name dbsv1 -e MYSQL_ROOT_PASSWORD=pass123 -e MYSQL_DATABASE=wp-mydb -d mysql:5.7.23
  4. docker run --name apsv1 --link dbsv1:dbsv1l -d -p 80:80 wordpress:php7.2

 

3行目に -e  MYSQL_DATABASE で データベース名を記載

4行目の  dbsv1:dbsv1   --link の後ろの コンテナ名の後ろの:dbsv1  が ホスト名 になる様 また 80ポートが使われてないなら 80:80 で http://localhost  で 動かす事が出来ます。

また wordpress 側の -e 環境変数で データベースを指定する事も出来ます。

これですと 言語選択 → データベースの設定 → ようこそ サイトの設定 と なります。

 

もちろん docker ps のコンテナID をMySQLのホスト名に入れても 大丈夫です。 localhost は ダメです!

 

こんな お助けでした