dockerでローカルにwordpress環境を作る
wordpressで色々いじっていると、404エラーが表示されるときやgoogle先生がアクセスできない場合などがあり、テスト環境が欲しいなと思っていました。
なので今回は、以前導入したDockerを使ってwordpressをインストールをしました。
https://memoran.net/introduction-docker/
事前環境
今回はWindowsマシンでやってみます。 WindowsマシンにはVirtual Boxをインストールしているので、仮想環境上にLinuxを立ち上げて、さらにそのLinux上でDockerを起動しwordpressをインストールしてみます。 N予備校でWindowsマシンにVirtualboxとvagrantの導入手順を説明してあるので、そちらを参考に導入を済ませてあります。
CoreOSの起動
初めにCoreOSというLinux Distributionの一つであり、Container Linuxとも呼ばれその名の通りコンテナ仮想化(≒Docker)に特化したOSを設定します。 必要最低限の構成となっており、最初からDockerを使えます。
最初にhttps://github.com/coreos/coreos-vagrant.gitからcoreOSのイメージダウンロードしてきます。
gitを導入している場合はgit clone https://github.com/coreos/coreos-vagrant.git
これでクローンできます。
私の環境のWindowsではvagrantを使用するのにPowerShellを使用しています。 PowerShellを管理者権限で実行して下記のコマンドを実行します。
# coreOSのVagrantfileがあるディレクトリに移動
$ vagrant up
暫く待つと、coreOSが立ち上がります。 起動後、ログインしDockerのバージョンを確認します。
$ vagrant ssh
core@core-01 ~ $ docker -v
Docker version 18.06.1-ce, build e68fc7a
各公式イメージをpull
wordpressを構築するのに必要なイメージファイルを取得してきます。
導入のときの手順では直接docker run
で起動していましたが、一旦docker pull
でイメージファイルをダウンロードします。
必要なイメージファイルはwordpressとMySQLです。
# wordpressの公式イメージ
$ sudo docker pull wordpress
# MySQLの公式イメージ
$ sudo docker pull mysql
イメージのダウンロードが終わった後、docker images
でダウンロードされたイメージが確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest 14be4544f181 7 hours ago 408MB
mysql latest 6a834f03bd02 26 hours ago 484MB
wordpressサイトの立ち上げ
ではいよいよwordpressのサイトを立ち上げます。
docker run
することで各イメージファイルからコンテナを作成し、それらを連携してwordpressのサイトを構築できます。
$ sudo docker run --name mysite_db -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=mysite -d mysql
$ sudo docker run --name mysite --link mysite_db:mysql -p 80:80 -e $ WORDPRESS_DB_PASSWORD=password -d wordpress
上記のコマンドは--name
でコンテナの名前をつけて-e
でコンテナの環境変数を設定しています。
-d
でバックグラウンドでの起動をさせ、--link
では他コンテナへのリンクを設定します。
-p
でポートを指定すれば準備完了です。
docker ps
で稼働中のDockerコンテナを確認できます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
152bc757f38d wordpress "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp mysite
8e14af89edff mysql "docker-entrypoint.s…" 19 seconds ago Up 18 seconds 3306/tcp, 33060/tcp mysite_db
サイトへアクセス
サイトへアクセスするにはifconfig
でローカルIPを調べて、そのIPでアクセスできます。
$ ifconfig
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.8.101 netmask 255.255.0.0 broadcast 172.17.255.255
私の場合は172.17.8.101
だったのでブラウザでこれにアクセスします。
wordpressの初期画面が表示されれば完了です。
ファイルアクセス
直接wordpress内のファイルにアクセスする場合は以下のコマンドを使います。
$ docker exec -it mysite /bin/bash
root@152bc757f38d:/var/www/html#
そうするとLinuxのコマンドで対話的に操作することできます。
気軽にテスト環境
dockerを使うと、wordpressの環境が簡単に作れました。 ローカルに環境を構築しようとすると、xamppなどで環境を整える必要があったり、削除しようにも面倒な作業が必要になります。 それがdockerならコマンドだけで環境構築ができ、不要になったらすぐ削除することもできて気軽にwordpressが初められると思います。(Webへ公開するにはまた別手順が必要ですが)
私もローカル環境構築できたので、ローカルでテストを行ったから問題がないことを確認して、本番環境へ反映させようと思います。