2015-07-19

使用 CoreOS Docker 搭建 WordPress

目录

  • 说明
  • 创建 ECS
  • 启动 MySql 容器
  • 启动 WordPress 容器
  • 参考文献

说明

本 Blog 基于 Docker 搭建, 下面介绍搭建过程. WordPress Docker CoreOS 和 阿里云 ECS 相信大家都知道了, 本文采用阿里云 ECS 搭建一个 WordPress 站点

创建 ECS

打开阿里云 ECS 产品页, 点击购买即可看到如下所示页面, 选择适合自己的配置付款之后即可创建一个 ECS. 本文采用美国硅谷的 ECS slice-struct

启动 MySql 容器

参见 MySql 镜像 文档, 你会发现 MySql 镜像默认是不会保存数据库文件到容器中的. 之所以这样设计是为了多个 MySql 容器可以共用数据. 所以本文使用了外挂券的方式共享数据库文件, 使用如下命令启动 MySql 容器

docker run --name jike.me-mysql -v /root/jike.me/var/lib/mysql:/var/lib/mysql -v /root/jike.me/:/var/data/backup -e MYSQL_ROOT_PASSWORD=xxx -d mysql
  • –name 表示创建一个命名容器, 容器的名字是 jike.me-mysql
  • -v /root/jike.me/var/lib/mysql:/var/lib/mysql 挂载本地文件目录到容器中, 容器中 /var/lib/mysql 这个目录存放的是数据库文件, 可以通过这种方式使得不同的容器共享数据库文件.
  • -v /root/jike.me/:/var/data/backup 挂载一个数据备份目录到容器中, 方便 MySql 备份和恢复使用
  • -e MYSQL_ROOT_PASSWORD=xxx 设置 MySql root 用户的密码
  • -d mysql 通过 mysql 镜像生成容器, 并保持后台运行

上述命令中 -v /root/jike.me/var/lib/mysql:/var/lib/mysql 这种做法的好处有:

  • 可以方便的在不同容器间共享数据库文件
  • 当容器镜像升级的时候(比如 MySql 5.2 升级到 5.6 ), 可以方便的升级镜像启动新的容器加载历史数据.

启动 WordPress 容器

使用如下命令启动 WordPress 容器

docker run --name jike.me-wordpress --link jike.me-mysql:mysql  -v /root/jike.me/:/var/data/backup -v /root/jike.me/var/lib/wordpress/uploads/:/var/www/html/wp-content/uploads  -v /root/jike.me/var/lib/wordpress/themes/:/var/www/html/wp-content/themes/ -p 80:80 -d wordpress
  • –link jike.me-mysql:mysql 因为 WordPress 需要使用 MySql, 所以通过这个方式告诉 WordPress jike.me-mysql 这个容器提供了 mysql 服务
  • -v /root/jike.me/:/var/data/backup 挂载一个单独的卷, 方便备份和恢复数据使用
  • -v /root/jike.me/var/lib/wordpress/uploads/:/var/www/html/wp-content/uploads -v /root/jike.me/var/lib/wordpress/themes/:/var/www/html/wp-content/themes/ 这两个参数分别把 WordPress 的 uploads 和 themes 目录暴露到外面, 这两个目录分别存放上传的文件和主题文件, 一样也是为了共享数据和方便升级, 所以这两个目录单独挂载出来
  • -p 80:80 是告诉 Docker 把容器的 80 端口映射到宿主机的 80 端口, 以便对外提供服务

使用静态 Ip 的方式启动

  • 创建一个虚拟网络

    docker network create --subnet=172.18.0.0/16 mynet
    
  • 使用虚拟网络指定静态 IP 172.18.0.22 启动 mysql

    docker run --name jike.me-mysql-2 -v /root/jike.me/var/lib/mysql:/var/lib/mysql -v /root/jike.me/:/var/data/backup -e MYSQL_ROOT_PASSWORD=my-secret-pw --net mynet --ip 172.18.0.22  -d mysql
    
  • 指定 IP 和 网络启动 wordpress

    docker run --name jike.me-wordpress-2 --link jike.me-mysql-2:mysql  -v /root/jike.me/:/var/data/backup -v /root/jike.me/var/lib/wordpress/uploads/:/var/www/html/wp-content/uploads  -v /root/jike.me/var/lib/wordpress/themes/:/var/www/html/wp-content/themes/ -p 80:80 -e WORDPRESS_DB_HOST=172.18.0.22:3306 -e WORDPRESS_DB_PASSWORD=my-secret-pw --net mynet -d wordpress
    

参考文献