WordPress
開発環境
docker
dockerformac

Docker for MacでWordPressローカル環境構築

More than 1 year has passed since last update.

はじめに

WordPressのローカル開発環境を、VagrantとVirtualBoxで構築していたのですが、vagrant upでなかなかの時間がかかることにみぞみぞしておりました。
Docker for macなるものを見つけ、試しに使ってみる事にしました。

アジェンダ

  • Dockerインストール
  • MySQLコンテナの作成
  • WordPressコンテナの作成
  • phpMyAdminコンテナの作成

Dockerをインストール

Install Docker for Mac へアクセスしインストールする。

1.png

ダウンロードされた、Docker.dmgをクリック。

2.png

Applicationsへドラッグ & ドロップ。

3.png

Docker.appをクリック。

ちなみに彼の名前はMoby Dock
https://blog.docker.com/2013/10/call-me-moby-dock/

インストールが完了すると、dockerコマンドが使える。
試しに使えるのか確認。

$ docker --version 
Docker version 17.03.0-ce, build 60ccb22

DockerイメージとDockerコンテナ

ざっくりな説明ですが。。。。

Dockerコンテナ
  • Dockerイメージを動かす為の箱。
Dockerイメージ
  • コンテナ作成のベースとなるテンプレート。

MySQL用のコンテナを作成

Dockerに用意されているコマンドを叩けば、すぐ作成できる。

詳しくは、Docker Hubにアカウント登録し、自分に必要なバージョンを用意すると良い。

今回は、下記で進めていく。

$ docker run --name (コンテナ名) -e MYSQL_ROOT_PASSWORD=パスワード -d mysql:5.7
  • (コンテナ名)に名前を入れる
  • パスワードにMySQLのルートユーザのパスワードを入れる

(例)

$ docker run --name dev_db -e MYSQL_ROOT_PASSWORD=XXXXX -d mysql:5.7

起動したコンテナの状況を確認するコマンド。
-aは、すべての情報を表示。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
9e0153fa2cbf        mysql:5.7           "docker-entrypoint..."   2 minutes ago       Up 2 minutes        3306/tcp            dev_db

MySQLが動いているかの確認するコマンド

$ docker exec -it dev_db bash
root@780a8747c93e:/# ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ssl    0:00 mysqld
  145 ?        Ss     0:00 bash
  150 ?        R+     0:00 ps ax

root@780a8747c93e:/# exit

Wordpress用のコンテナを作成

WordPressを動かすDockerコンテナを作成する

docker run --name (WordPress用のコンテナ名) --link db:mysql -p 8080:80 -v (~/ローカルパス):/var/www/html -d wordpress
  • (WordPress用のコンテナ名)に名前を入れる
  • (MySQLのコンテナ名)に先ほどの作成したMySQLのコンテナ名を入れる
  • (~/ローカルパス)にwordpressが格納されるディレクトリを指定する。(作業ディレクトリ)
  • 8080番ポートを指定

(例)

docker run --name dev_wp --link dev_db:mysql -p 8080:80 -v ~/Project/dev_wp/wordpress:/var/www/html -d wordpress

指定したパスでパッケージが展開されているか確認する。

$ cd ~/Project/dev_wp/wordpress
$ ls -la
-rw-r--r--@   1 oohashiken  staff    234  3 24 19:10 .htaccess
-rw-r--r--@   1 oohashiken  staff    418  9 25  2013 index.php
-rw-r--r--@   1 oohashiken  staff  19935  1  3 03:51 license.txt
-rw-r--r--@   1 oohashiken  staff   7433  1 12 02:46 readme.html
-rw-r--r--@   1 oohashiken  staff   5447  9 28 06:36 wp-activate.php
drwxr-xr-x@  89 oohashiken  staff   3026  3  7 01:00 wp-admin/
-rw-r--r--@   1 oohashiken  staff    364 12 19  2015 wp-blog-header.php
-rw-r--r--@   1 oohashiken  staff   1627  8 29  2016 wp-comments-post.php
-rw-r--r--@   1 oohashiken  staff   2764  3 24 19:10 wp-config-sample.php
-rw-r--r--@   1 oohashiken  staff   3145  3 24 19:10 wp-config.php
drwxr-xr-x@   5 oohashiken  staff    170  3  7 01:00 wp-content/
-rw-r--r--@   1 oohashiken  staff   3286  5 25  2015 wp-cron.php
drwxr-xr-x@ 187 oohashiken  staff   6358  3  7 01:00 wp-includes/
-rw-r--r--@   1 oohashiken  staff   2422 11 21 11:46 wp-links-opml.php
-rw-r--r--@   1 oohashiken  staff   3301 10 25 12:15 wp-load.php
-rw-r--r--@   1 oohashiken  staff  33939 11 21 11:46 wp-login.php
-rw-r--r--@   1 oohashiken  staff   8048  1 11 14:15 wp-mail.php
-rw-r--r--@   1 oohashiken  staff  16250 11 29 14:39 wp-settings.php
-rw-r--r--@   1 oohashiken  staff  29896 10 19 13:47 wp-signup.php
-rw-r--r--@   1 oohashiken  staff   4513 10 15 04:39 wp-trackback.php
-rw-r--r--@   1 oohashiken  staff   3065  9  1  2016 xmlrpc.php

同じように、起動したコンテナの状況を確認する。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
c345591d9e9c        wordpress           "docker-entrypoint..."   6 minutes ago       Up 6 minutes        0.0.0.0:8080->80/tcp   dev_wp
780a8747c93e        mysql:5.7           "docker-entrypoint..."   26 minutes ago      Up 26 minutes       3306/tcp               dev_db

0.0.0.0:8080->80/tcpが表示されてるので、アクセス。(どちらでも)

PhpMyAdmin用のコンテナを作成

Docker Hub phpmyadmin/phpmyadmin

docker run --name (PhpMyAdmin用のコンテナ名) -d --link (MySQL用のコンテナ名:db) -p 8888:80 phpmyadmin/phpmyadmin
  • (PhpMyAdmin用のコンテナ名)に名前を入れる
  • (MySQL用のコンテナ名:db)に先ほどの作成したMySQLのコンテナ名を入れる。:dbは固定
  • wordpress(8080)と被らないように8888番ポートを指定

(例)

docker run --name phpmyadmin -d --link dev_db:db -p 8888:80 phpmyadmin/phpmyadmin

同じように、起動したコンテナの状況を確認する。

$ docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                  NAMES
4343b788195b        phpmyadmin/phpmyadmin   "/run.sh phpmyadmin"     2 seconds ago       Up 2 seconds        0.0.0.0:8888->80/tcp   phpmyadmin
c345591d9e9c        wordpress               "docker-entrypoint..."   21 minutes ago      Up 21 minutes       0.0.0.0:8080->80/tcp   dev_wp
780a8747c93e        mysql:5.7               "docker-entrypoint..."   41 minutes ago      Up 41 minutes       3306/tcp               dev_db

0.0.0.0:8888->80/tcpが表示されてるので、アクセス。(どちらでも)
ログインは、先ほど作成したMySQLのパスワード。

ユーザー名:root
パスワード:XXXXX

あとは、いつも通り、ユーザーを追加したりデータベースの作成を進めれば良い。

コマンド一覧 操作方法

Dockerコマンド 説明
docker --version バージョンを表示する
docker ps -a コンテナの一覧表示(-a で停止してるコンテナも表示)
docker start コンテナ名 コンテナ開始
docker stop コンテナ名 コンテナ停止
docker rm コンテナ名 不要のコンテナ削除
docker images イメージの一覧表示
docker rmi イメージ名 コンテナで使用しているイメージを削除
docker exec -it コンテナ名 /bin/bash
※抜ける時は、 みんな大好きexit
Dockerコンテナへアクセス

※今回使用したコマンド。

おわりに

高速 + 簡単。
ミスった場合も数秒で削除し、また作り直すことができる。
私のような低スペックなPCで作業してる人には、とてもありがたいです。
今回、紹介した以外にも、高性能にカスタマイズされた環境もありますので、Docker Hubを利用していきたいなと思います。

参照