使用Docker构建WordPress环境
使用Docker构建WordPress环境
开发环境
- ubuntu 14.04
这篇文章的目的
-
- Dockerのチュートリアル終わって次何しよっかーって状態になった。
-
- 実際にちゃんと動くもの見ないとイメージつかないなと思ったので身近なwordpressを選択
- Docker Hubでwordpressのコンテナあるし試してみよう
https://registry.hub.docker.com/_/wordpress/ 的内容可以用以下方式在中文中表达:
WordPress的Docker注册表:https://registry.hub.docker.com/_/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コンテナ作れってことか
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
- ブラウザで確認
请访问本地主机的端口8080。
总结
我已经了解了Docker的使用方法以及容器之间的连接。未来我想将重点放在容器构建上。