使用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的使用方法以及容器之间的连接。未来我想将重点放在容器构建上。

广告
将在 10 秒后关闭
bannerAds