いうえおかき

Mac × Docker × WordPress。環境構築までの道のり〜さようならXampp〜

ついにDockerを使うことにしました。

さようならXamppくん、Dockerくんよろしく。

自分はワードプレスを使い始めてから、ローカルでの作業はずっとXamppを使っていました。
しかし、先日Mac版のXamppが動かなくなりました。
理由としては、Pythonの学習をしていた際に、いろんなソフトを入れたりポートを変えて試行錯誤をしていたのですが、その影響でポート含め設定がおかしくなったようで、Xamppが起動しなくなってしまいました。。。
「もう一度全部入れ直そう」としていたやさき、PHPカンファレンスにてDockerの話を聞いて、この機会にDockerを使ってみようと思い、Xamppくんを捨て、Dockerで環境構築をすることにしました。

Dockerなにがいいの?


はっきりいってまだ初心者レベルの自分では理解しきれていないです。いろいろ話を聞いていて、なんとなくですが
「軽い」
「環境がローカル・サーバ共に統一できる」
でしょうか(雑)。

「Xamppでローカル開発していて、いざ本番にあげたらMySqlやPHPのバージョンが違ってうまく動かなかった」。あるあるですが、これも防げるようです。どうも開発環境をそのままサーバにあげられる認識のようです。さらにgitとも連携すればもはや怖いものなさそう(?)。しかし、専用サーバはともかくレンタルサーバとかだと難しい気がします。。利点をいかせないと思いますがどうなのでしょう。そこらへんは調査(勉強)が必要ですね。

Dockerを入れてみよう!

Dockerを早速入れてみます。

下記のDockerサイトからインストールできるのですが、アカウントが必要です。
▼Dockerダウンロードはこちら
https://hub.docker.com/editions/community/docker-ce-desktop-mac
なので、アカウント登録してダウンロードしましょう!!無料です(Docker-hub内の領域を使う際は有料のようですが最初は特に使う必要もないと思います)。
※ちなみに自分はダウンロード後のインストールで「検証中」のまま動かず再起動したりしました。。結局20分以上そのまま置いておいたら動きました。。。。これは自分のMacのせいですが。

初期設定

最初下記のページを参考に入れていきました。このページ内にも書いてありますが途中でエラーが起きます。
▼Docker for Macをインストールして、WordPress開発環境を手に入れたメモ
https://qiita.com/sararilfy/items/71a243f0b6e34fac82d9
ところが、、上記ページの解決法を試しても動かず。。。

さて困った。といろんなんサイトを探していたら「docker-composeで作るWordpress環境」というページを見つけました。
▼docker-composeで作るWordpress環境
https://qiita.com/sayama0402/items/0f77861e059b38ea547a

docker-composeとは、いちいちターミナルでコマンドをうってインストールしなくてもymlファイルに書き込んで読ませればすぐに環境を作ってくれる、というものです(現状の知識レベルでの個人的理解です)。こっちの方が手早そうだったのでこっちで製作しました。

新しく「Docker」というフォルダを作ってそこに構築。

ちなみに、地味に書いていなくてわかりにくかったのですが
ymlファイルを起動するには下記のコマンドを使います。

docker-compose up -d

これで、ymlにかいたものが全部追加されます。コマンドライン1回ですむのとそのファイル自体が履歴みたいなものなので、とても便利だと思いました。

インデントルールに注意

ただ注意点が!
ymlファイルはインデントが非常に大事なようです。htmlみたいにインデントが適当でも動くものではなくpythonみたいに、インデントをルール通り(YAMLのルール)に合わせないとエラーが出ます!!自分も最初知らなくて「エラー出てるけど全然解決できない!」と思っていたらインデントが1スペースずれていただけでした。。。
pythonをやっていたおかげで早く気づけたので助かりました。

とりあえずコンテナというものができた!

Dockerだと、コンテナとイメージというものが非常に大事のようですがほぼ理解せずにここまできました(すごく雑)。
とりあえず何かできているので今はOKでしょう!しかし、、、

Dockerの中身

うーんよくわからない。PORTもかなり重要な要素だと思います。
最初8080でワードプレス作ってましたが、8000になってしまいました。ymlで設定できるのですが、そのままにしています。あとでなにか影響が出たら直します。
「ワードプレスといえばポート80と8080!!!」という頭になっています。

phpmyadmin使いたい!のでDockerに入れてみる。

Xampp時代、相当お世話になったphpmyadmin。sqlやデータベースに詳しくなくてもわかりやすいUI、スピード感にはとても助けられました(本当はphpmyadminなしでも管理できる力を手に入れてから使った方が安全ですが)。

Dockerにも入れられるので、早速docker-compose.ymlに追加して入れてみました。またインデントミスでエラーおきましたが紆余曲折を経て完成!

しかし動かない。。あれ?
http://localhost:8000/phpmyadmin/
で動くと思っていました(ポートとコンテナの意味をきちんと理解していないことが露見。。。)。

うーん、調べてみるとポートを変えないとダメなよう。
試しに、8080に設定したところ動きました!
http://localhost:8000/=ワードプレスサイト
http://localhost:8080/=phpmyadmin
になりました。なんか違和感。。

本当にデータベース繋がっているか怪しかったのでテスト

サンプルページの本文を変更して、phpmyadminでpost情報が変わっているか確認。

変わってました!!ふう、、一安心。。

赤枠部分が変わりました。

さてさて、、次は本番のテーマを同期させないと。。

今後の流れ:さくらVPSか?

今完全ローカルだけで組んでいます。これを今使っているロリポップレンタルサーバにあげるとなるとあまりDockerにした意味がなさそうです。Xamppと同じ使い方になってしまいそうですね。本当にDockerの魅力を知るにはVPSが良さそうです。
PHPカンファレンスでも話に出ていましたが、さくらVPSは良いようですね。。
うーん借りてみないとわからないですが。。。

いずれにせよ、自分のパソコン環境のlocalhostは80も8080もDockerくんのものになりました。

ちなみに下記古い情報を最初見ていてうまくいかず悩んだ事例です。

◼︎データベースに接続できない!
→ymlファイル上の
WORDPRESS_DB_HOST: Mysql

WORDPRESS_DB_HOST: db:3306
に変更。
▼DockerでPHPエラー「php_network_getaddresses: getaddrinfo failed: Name or service not known」
https://tech.pjin.jp/blog/2018/02/27/docker%E3%81%A7php%E3%82%A8%E3%83%A9%E3%83%BC%E3%80%8Cphp_network_getaddresses-getaddrinfo-failed-name-or-service-not-known%E3%80%8D/

◼︎未定義があってエラーが起きる!
→linksが使えなくなったことが原因?らしいので削除(最新のDocker-conposeでは自動でlinksの役割を果たすようになったから??)
そうしたら無事エラーなくなり動きました。
▼いい加減docker-composeでlinksを使うのをやめてnetworkでコンテナ間名前解決をする
https://qiita.com/dyoshikawa/items/05d627b962da35f7d5b6

で解決。うーん新旧の情報が混在してますね。。。

トップへ戻る