はじめに
WordPressのローカル開発環境を、VagrantとVirtualBoxで構築していたのですが、vagrant up
でなかなかの時間がかかることにみぞみぞしておりました。
Docker for macなるものを見つけ、試しに使ってみる事にしました。
アジェンダ
- Dockerインストール
- MySQLコンテナの作成
- WordPressコンテナの作成
- phpMyAdminコンテナの作成
Dockerをインストール
Install Docker for Mac へアクセスしインストールする。
ダウンロードされた、Docker.dmg
をクリック。
Applicationsへドラッグ & ドロップ。
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を利用していきたいなと思います。