Docker for MacでWordPress
こちらの記事を参考に、Docker for MacでWordPressの環境を構築しました。
作業の内容としては、Docker Hub*1にあるDockerのOfficial RepositoriesからDockerイメージを持ってきて、WordPressが入ってるDockerコンテナを起動するだけです。
- Docker for Macをインストール
- MySQLのDockerイメージを持ってきてコンテナを起動*2
- WordPressのDockerイメージを持ってきてコンテナを起動*3
目次
いかにしてその心情に至ったか
- 『Mac WordPress』で検索して
MAMP
を使う方法を知る
↓ MAMP
でApache
を使うよりVagrant
とVirtualBox
で仮想化環境を用意する方が汎用性が高い気がしたので仮想化環境の構築を考える
↓- 仮想化と言えばDockerがあるじゃないか!!てかDocker使ってみたい!!と考える
で、Dockerを使ってみることにしました。
Docker for Macの準備
Get started with Docker for Macを見ながら、Docker.appをダウンロードしてインストールします。
Install Docker on macOSによると、Docker for Macは仮想化ソフトのxhyveでLinuxカーネルとDocker Engineを動かしてるそうです。
Docker for Mac is our newest offering for the Mac. It runs as a native Mac application and uses xhyve to virtualize the Docker Engine environment and Linux kernel-specific features for the Docker daemon.
Install Docker on macOS - Docker
インストールが完了すると、docker
コマンドが使えるようになります。
$docker --version Docker version 1.12.3, build 6b644ec
MySQLをDockerコンテナで起動
docker run
コマンドで、MySQLデータベースを動かすDockerコンテナを起動します。
$docker run --name wordpress_db -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
- --name wordpress_db … コンテナに名前を付けるオプション*4で起動するコンテナの名前に
wordpress_db
を設定する - -e … コンテナに環境変数を設定するオプション
- MYSQL_ROOT_PASSWORD=password … MySQLのルートユーザのパスワードに
password
を設定する - -d … コンテナをデタッチドモードでバックグランドで起動するオプション
- mysql:5.7 … リポジトリ*5にある
mysql
Imageの5.7
のtag*6のDockerイメージをコンテナとして起動する
起動したコンテナの状況は、docker ps
コマンドで確認できます。
$docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 560a00d4a51f mysql:5.7 "docker-entrypoint.sh" 46 seconds ago Up 45 seconds 3306/tcp wordpress_db
MySQLが動いているDockerコンテナを操作してみる
docker exec
コマンド*7で、MySQLが動いているDockerコンテナのbash
を動かし、CLIシェルを操作します。
$docker exec -it wordpress_db bash root@560a00d4a51f:/#
- -i … コンテナをインタラクティブに操作するためにコマンド実行後も標準入力を開いたままにしておくオプション
- -t … コンテナに仮想的にTTYを割り当てて標準出力を表示させるオプション
- -it コンテナ名 bash … コンテナでbashコマンドを実行してホストOS*8からコンテナのシェルを操作できるようにする
※注:コンテナへの接続で調べるとdocker attach
コマンドをよく見かけますが、デーモン*9しか動いていないコンテナの場合は、docker attach
コマンドで接続してもあまり意味は無い*10ようです。
とりあえず、ps ax
コマンドでコンテナの状態を確認してみます。
$docker exec -it wordpress_db bash root@560a00d4a51f:/# ps ax PID TTY STAT TIME COMMAND 1 ? Ssl 0:03 mysqld 71 ? Ss 0:00 bash 365 ? R+ 0:00 ps ax
mysqld
が動いているのを確認できました(๑•̀ㅂ•́)و✧
exit
コマンドでbash
プロセスを終了すれば、コンテナへの接続を終了できます。
root@560a00d4a51f:/# exit exit
WordPressをDockerコンテナで起動
docker run
コマンドで、WordPressを動かすDockerコンテナを起動します。
$docker run --name wapuu_dock --link wordpress_db:mysql -p 8080:80 -v ~/WapuuDock:/var/www/html -d wordpress
- --name wapuu_dock … コンテナに名前を付けるオプション*11で起動するコンテナの名前に
wapuu_dock
を設定する - --link wordpress_db:mysql … コンテナの起動時に他のコンテナに接続するオプションでMySQLを動かしているコンテナに接続する
- -p 8080:80 … ポートを設定するオプションでホストOS*12のポート
8080
とDockerコンテナのポート80
を対応させる - -v ~/WapuuDock:/var/www/html … ボリュームを設定するオプションでホストOS*13のディレクトリ
~/WapuuDock
とコンテナのディレクトリ/var/www/html
を対応させる - -d … コンテナをデタッチドモードでバックグランドで起動するオプション
- wordpress … リポジトリ*14にある
wordpress
Imageのlatest
*15のDockerイメージをコンテナとして起動する
docker run
が完了すると、-v
オプションで指定したディレクトリにWordPress
パッケージが展開されています。
~/WapuuDock
$ls
index.php wp-activate.php wp-comments-post.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
license.txt wp-admin wp-config-sample.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
readme.html wp-blog-header.php wp-config.php wp-includes wp-login.php wp-signup.php
WordPressが動いているDockerコンテナの確認
docker ps
コマンドでDockerコンテナの状態を確認してみると、WordPressが動いているwapuu_dock
コンテナのPORTS
の欄に0.0.0.0:8080->80/tcp
と表示されているので、0.0.0.0:8080
でwapuu_dock
コンテナのWordPressに接続できるようです。
$docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 33ff6cd31853 wordpress "docker-entrypoint.sh" 6 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp wapuu_dock 560a00d4a51f mysql:5.7 "docker-entrypoint.sh" 46 seconds ago Up 45 seconds 3306/tcp wordpress_db
ブラウザのアドレスバーに、0.0.0.0:8080
を入力してみます。
あっさりと、WordPressの初期設定画面が表示されました(゚∀゚)
初期設定が終わった後は、指定したディレクトリに展開されているWordPressパッケージの各種ファイルを編集して、テーマのカスタマイズ等に着手します( つ•̀ω•́)つ
参考記事
- The Docker Platform
- Get started with Docker - Docker
- Install Docker on macOS - Docker
- Overview of Docker Hub - Docker
- The Docker commands - Docker
- Wordpress環境をローカルで、超簡単に構築!Docker for mac | Drip 'n' Snip
- プログラマのためのDocker超入門 01.仮想化 - Qiita
- docker exec を使いこなす | ユニコーンリサーチ
開発環境
- OSX 10.11.6 El Capitan
- テキストエディタ: MacVim
- ターミナルエミュレータ: Macターミナル
- シェル: zsh
- ブラウザ: Firefox - Docker for Mac 1.12.3
*1:Dockerイメージを共有できたりするレジストリサービス
*2:WordPressのコンテナ起動時にデータベースを指定するので先にMySQLのコンテナを起動する
*3:先に起動させたMySQLのコンテナをデータベースに指定して起動する
*4:--nameオプションはイメージやコンテナを指定する前に記述する必要があるようです
*5:指定したイメージがローカルに無ければDocker Hubとかのイメージリポジトリを調べるようです
*6:参考記事と同じくversion5.7を選択しました
*7:起動しているコンテナで新しいコマンドを実行するコマンド
*10:私の環境に問題があるのかも知れませんが
*11:--nameオプションはイメージやコンテナを指定する前に記述する必要があるようです
*14:指定したイメージがローカルに無ければDocker Hubとかのイメージリポジトリを調べる
*15:tagの指定がない場合はlatestが選択される