Memorandum

普段の生活の覚え書き。主に技術録

dockerでローカルにwordpress環境を作る

wordpressで色々いじっていると、404エラーが表示されるときやgoogle先生がアクセスできない場合などがあり、テスト環境が欲しいなと思っていました。

なので今回は、以前導入したDockerを使ってwordpressをインストールをしました。

https://memoran.net/introduction-docker/

事前環境

今回はWindowsマシンでやってみます。 WindowsマシンにはVirtual Boxをインストールしているので、仮想環境上にLinuxを立ち上げて、さらにそのLinux上でDockerを起動しwordpressをインストールしてみます。 N予備校WindowsマシンにVirtualboxvagrantの導入手順を説明してあるので、そちらを参考に導入を済ませてあります。

  • Windows 10 Pro 64bit
  • Virtual Box 5.2.18 r124319 (Qt5.6.2)
  • Vagrant 2.0.2

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でイメージファイルをダウンロードします。

必要なイメージファイルはwordpressMySQLです。

# 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へ公開するにはまた別手順が必要ですが)

私もローカル環境構築できたので、ローカルでテストを行ったから問題がないことを確認して、本番環境へ反映させようと思います。