Dockerでwordpressの環境構築
開発環境
- ubuntu 14.04
この記事の目的
- Dockerのチュートリアル終わって次何しよっかーって状態になった。
- 実際にちゃんと動くもの見ないとイメージつかないなと思ったので身近なwordpressを選択
- Docker Hubでwordpressのコンテナあるし試してみよう
この記事でやっていること
- Docker Hubからwordpressのイメージ持ってくる
- Docker Hubからmysqlのイメージ持ってきて起動
- 再度wordpressを立ち上げる
- wordpressの動作確認
Docker Hubからwordpressのイメージ持ってくる
- 結構時間かかった。
- 3分ぐらい?
$ docker pull wordpress
Pulling repository wordpress
9f51af77fd96: Pulling dependent layers
~ 省略 ~
30ba4a4304b4: Download complete
b2aa6b070112: Download complete
d49f43e6ad6b: Downloading [=================================================> ] 1.366 MB/1.372 MB 0
2015/02/06 05:19:29 unexpected EOF
- ついでにgithubからソースコード持ってくる
$ git clone git@github.com:docker-library/wordpress.git
- buildしてみる
$ docker build -t hoge:wordpress ./
- とりあえずsshで入ってみる
$ docker run -it hoge:wordpress /bin/bash
error: missing MYSQL_PORT_3306_TCP environment variable
Did you forget to --link some_mysql_container:mysql ?
- 怒られる
- Mysqlの設定がない?
- run する時に
--link some_mysql_container:mysql
をつけろとのこと - つまりmysqlコンテナ作れってことか
- run する時に
- Mysqlの設定がない?
Docker Hubからmysqlのイメージ持ってきて起動
$ docker pull mysql
$ git clone git@github.com:docker-library/mysql.git
- 5.6入れてみた
$ cd mysql/5.6
$ docker build -t hoge:mysql56 ./
- runする時に環境変数でパスワードを渡す
$ docker run --name hoge_mysql56 -e MYSQL_ROOT_PASSWORD=hogehoge -d hoge:mysql56
- 念のため立ち上がってるの確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d23478ffce2 hoge-mysql:latest /entrypoint.sh mysql 8 seconds ago Up 7 seconds 3306/tcp hoge_mysql56
- mysqlに接続してみる
$ docker run -it --link hoge_mysql56:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.23 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
再度wordpressを立ち上げる
- build
$ docker build -t hoge:wordpress ./
- sshで繋ぐ
$ docker run -it --link hoge_mysql56:mysql hoge:wordpress /bin/bash
WordPress not found in /var/www/html - copying now...
WARNING: /var/www/html is not empty - press Ctrl+C now if this is an error!
+ ls -A
index.html
+ sleep 10
Complete! WordPress has been successfully copied to /var/www/html
$ root@752f6b311b98:/var/www/html#
- とりあえず ls
- 色々wordpress関連のものが入ってるのがわかった
$ ls -al
total 204
drwxr-xr-x 5 www-data www-data 4096 Feb 6 09:07 .
drwxr-xr-x 3 root root 4096 Jan 27 19:05 ..
-rw-r--r-- 1 www-data www-data 163 Feb 6 09:07 .htaccess
-rw-r--r-- 1 www-data www-data 11104 Jan 27 19:04 index.html
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19930 Apr 9 2014 license.txt
-rw-r--r-- 1 www-data www-data 7193 Sep 29 13:24 readme.html
-rw-r--r-- 1 www-data www-data 4951 Aug 20 17:30 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Dec 18 18:18 wp-admin
-rw-r--r-- 1 www-data www-data 271 Jan 8 2012 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 5008 Nov 26 20:17 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2726 Sep 9 01:23 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3108 Feb 6 09:07 wp-config.php
drwxr-xr-x 4 www-data www-data 4096 Dec 18 18:18 wp-content
-rw-r--r-- 1 www-data www-data 2956 May 13 2014 wp-cron.php
drwxr-xr-x 12 www-data www-data 4096 Dec 18 18:18 wp-includes
-rw-r--r-- 1 www-data www-data 2380 Oct 24 2013 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 2714 Jul 7 2014 wp-load.php
-rw-r--r-- 1 www-data www-data 33435 Dec 16 22:19 wp-login.php
-rw-r--r-- 1 www-data www-data 8252 Jul 17 2014 wp-mail.php
-rw-r--r-- 1 www-data www-data 11115 Jul 18 2014 wp-settings.php
-rw-r--r-- 1 www-data www-data 25152 Nov 30 21:23 wp-signup.php
-rw-r--r-- 1 www-data www-data 4035 Nov 30 21:23 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3032 Feb 9 2014 xmlrpc.php
- wp-config.phpはどうなっってるか確認
~ 略 ~
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'hogehoge');
/** MySQL hostname */
define('DB_HOST', 'mysql');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
~ 略 ~
-
define('DB_HOST', 'mysql');
- ????
$ cat /etc/hosts
172.17.0.30 e23bf7b37582
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.21 mysql
- なるほど
wordpressの動作確認
- さっき作ったコンテナは捨てて再度立ち上げる
- ホストOSの8080番をコンテナの80番に割り当てる
$ docker run --name hoge_wordpress -d -p 8080:80 --link hoge_mysql56:mysql hoge:wordpress
- ブラウザで確認
http://localhost:8080
にアクセス
まとめ
Dockerの作法であったりコンテナ同士の繋がりがわかってきた。
今後はコンテナの構築を中心にやっていきたい。