はじめに
今回はだいぶ今更感のあるDockerについて備忘録。
仮想環境はVirtualBox+Vagrant一択かと思っていましたが、Docker軽くて良い!
違いとかは詳しく書いてる記事が他にあります。
0. Dockerを使い始めた経緯
個人で作成している検証環境を用意するほどでもないWordPressサイトを
ローカルで動作確認したかったので、Dockerで用意することにしました。
Dockerのインストール
1. 環境に応じてDockerをインストール
* Windowsの場合
Windows 10 Professional/Enterprise 64-bit:Docker CE for Windows
それ以外:Docker Toolbox
* Mac OSの場合
OS X Yosemite 10.10.3 以降:Docker CE for Mac
それ以前:Docker Toolbox
自分はMac OS 10.12.6 だったのでDocker CE for Macを使用です。
弊家のショボいネット環境でダウンロードに3,4分くらいかかりました。336MBでした。
インストール後は指示に従ってアプリケーションフォルダに移動した後、ダブルクリックで一度開きます。
ログインを求められるので、アカウントがあればログイン、なければ新規登録します。
2. 動作確認
インストールが成功しているかターミナルを開いて確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker ps
でコンテナリストを表示します。
インストールしただけであれば、上記のとおり、ヘッダーのみが表示されるはず。
WordPress環境構築
3. イメージファイル準備
すでに、アプリケーションのインストールまで設定されているイメージファイルがあるみたいだったので
今回はそれをそのまま利用する方法で構築します。
ちなみにWordPressを動かすためにMySQLも必要です。
どちらもpullコマンドで簡単ダウンロード。
何も指定しなければ最新版が落とされます。
$ docker pull mysql:5.7.21
5.7.21: Pulling from library/mysql
2a72cbf407d6: Pull complete
38680a9b47a8: Pull complete
4c732aa0eb1b: Pull complete
c5317a34eddd: Pull complete
f92be680366c: Pull complete
e8ecd8bec5ab: Pull complete
2a650284a6a8: Pull complete
5b5108d08c6d: Pull complete
beaff1261757: Pull complete
c1a55c6375b5: Pull complete
8181cde51c65: Pull complete
Digest: sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c
Status: Downloaded newer image for mysql:5.7.21
$ docker pull wordpress
Using default tag: latest
latest: Pulling from library/wordpress
2a72cbf407d6: Pull complete
273cd543cb15: Pull complete
ec5ac8875de7: Pull complete
9106e19b56c1: Pull complete
ee2f70ac7c7d: Pull complete
7257ad6985e8: Pull complete
18f5c2055da2: Pull complete
85293a6fdd80: Pull complete
9e797eeb0c14: Pull complete
09b55b88e646: Pull complete
2cd18314711e: Pull complete
2cdde1a28323: Pull complete
fc3ee0d04adb: Pull complete
b7e1265473a6: Pull complete
f607995e3490: Pull complete
40b3f428704d: Pull complete
0ab6b2d829e0: Pull complete
741ca917912d: Pull complete
28cd545f2968: Pull complete
Digest: sha256:9b785c740dd17e58436c00ac14d0f683d39f0e25c0ea63e71d44107f06eee5be
Status: Downloaded newer image for wordpress:latest
4. コンテナ起動
実際にイメージファイルを起動してみます。
$ docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=test-pw -d mysql
$ docker run --name test-wordpress --link test-mysql:mysql -d -p 8080:80 wordpress
一行目はmysqlのイメージファイルに「test-mysql」と明示的なコンテナ名をつけて、パスワードに「test-pw」を設定しています。
二行目では、wordpressのイメージファイルに「test-wordpress」と名付けて、mysqlに「test-mysql」をリンクさせ、ポートをローカルの8080:80に指定。
ここまで実行すると、docker ps
コマンドで、test-mysqlとtest-wordpressが起動中であることを確認できます。
そしてブラウザにアクセスすると・・・http://localhost:8080/
初期設定の画面が出力されるので、必要事項を選択・入力します。
すると、あっという間にこの通り、WordPressをローカルで触れる環境のできあがり!
5. コンテナにアクセス
起動中のコンテナにアクセスするにはexec
コマンドを使います。
これでWordPressがインストールされているディレクトリにアクセスします。
$ docker exec -it test-wordpress /bin/bash
オプションコマンドについては以下記事を参考に。
上記方法でコンテナにアクセスすれば、対話的にLinuxコマンドが使えるので
WordPress内のテーマファイルの書き換えや権限変更なども可能です。
[root@040e6ea385dc:/var/www/html# ls -la
total 204
drwxr-xr-x 5 www-data www-data 4096 Mar 18 16:06 .
drwxr-xr-x 1 root root 4096 Mar 14 13:58 ..
-rw-r--r-- 1 www-data www-data 35 Mar 18 16:18 .htaccess
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Jan 6 19:32 license.txt
-rw-r--r-- 1 www-data www-data 7413 Dec 12 2016 readme.html
-rw-r--r-- 1 www-data www-data 5434 Sep 23 12:21 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Feb 6 15:49 wp-admin
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1627 Aug 29 2016 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2764 Mar 18 16:06 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3145 Mar 18 16:06 wp-config.php
drwxr-xr-x 6 www-data www-data 4096 Mar 18 16:15 wp-content
-rw-r--r-- 1 www-data www-data 3669 Aug 20 2017 wp-cron.php
drwxr-xr-x 18 www-data www-data 12288 Feb 6 15:49 wp-includes
-rw-r--r-- 1 www-data www-data 2422 Nov 21 2016 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3306 Aug 22 2017 wp-load.php
-rw-r--r-- 1 www-data www-data 36583 Oct 13 02:10 wp-login.php
-rw-r--r-- 1 www-data www-data 8048 Jan 11 2017 wp-mail.php
-rw-r--r-- 1 www-data www-data 16246 Oct 4 00:20 wp-settings.php
-rw-r--r-- 1 www-data www-data 30071 Oct 18 17:36 wp-signup.php
-rw-r--r-- 1 www-data www-data 4620 Oct 23 22:12 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3065 Aug 31 2016 xmlrpc.php
コンテナの起動と停止
最後に、コンテナの起動・停止コマンドを念のため。
-- 起動
$ docker start <コンテナ名 or コンテナID>
-- 停止
$ docker stop <コンテナ名 or コンテナID>
start
とstop
だなんて。めっちゃ簡単です。
今回の場合は「test-wordpress」と「test-mysql」を両方停止しておきます。
停止しただけなら、削除ではないのでまたstartした時に前回の続きから使えるわけですね。
ちなみに、run
とstart
って何が違うんだ?と疑問に思ったので調べたら記事ありました。
おわりに
超サクっとローカル環境を用意することができました。
本番サーバーへの公開もラクチンになりそうな予感。(まだちゃんと調べてない)
* お願い
間違えている情報やリンク切れがありましたらどうぞご指摘ください。