使用Compose部署Wordpress应用

Compose使得运行wordpress在一个隔离的环境中变得容易且非常好。安装Compose ,然后下载Wordpress在当前目录中。

  1. $ curl https://wordpress.org/latest.tar.gz | tar -xvzf -

这将创建一个叫做wordpress的目录,如果你愿意你也可以重新命名你的工程名称,在那个目录下边,我们创建Dockerfile文件,定义你的应用的运行环境。

  1. FROM orchardup/php5
  2. ADD ./code

这描述docker将怎样构建一个包含php和wordpress的镜像。了解更多有关写dockerfile的内容,查看 Docker user guide 和Dockerfile reference。

接下来,docker-compose.yml 开启我们的web服务和一个分开的MySQL实例。

  1. web:
  2. build: .
  3. command: php -S 0.0.0.0:8000-t /code
  4. ports:-"8000:8000"
  5. links:- db
  6. volumes:-.:/code
  7. db:
  8. image: orchardup/mysql
  9. environment:
  10. MYSQL_DATABASE: wordpress
  11. 两个支持文件需要让这些工作有效,首先,wp-config.php 是标准的wordpress配置文件,带有一个需要修改数据库配置端口指向db容器。
  12. <?php
  13. define('DB_NAME','wordpress');
  14. define('DB_USER','root');
  15. define('DB_PASSWORD','');
  16. define('DB_HOST',"db:3306");
  17. define('DB_CHARSET','utf8');
  18. define('DB_COLLATE','');
  19. define('AUTH_KEY','put your unique phrase here');
  20. define('SECURE_AUTH_KEY','put your unique phrase here');
  21. define('LOGGED_IN_KEY','put your unique phrase here');
  22. define('NONCE_KEY','put your unique phrase here');
  23. define('AUTH_SALT','put your unique phrase here');
  24. define('SECURE_AUTH_SALT','put your unique phrase here');
  25. define('LOGGED_IN_SALT','put your unique phrase here');
  26. define('NONCE_SALT','put your unique phrase here');
  27. $table_prefix ='wp_';
  28. define('WPLANG','');
  29. define('WP_DEBUG',false);
  30. if(!defined('ABSPATH'))
  31. define('ABSPATH', dirname(__FILE__).'/');
  32. require_once(ABSPATH .'wp-settings.php');

最后,router.php告诉php构建web服务时怎样运行wordpress:

  1. <?php
  2. $root = $_SERVER['DOCUMENT_ROOT'];
  3. chdir($root);
  4. $path ='/'.ltrim(parse_url($_SERVER['REQUEST_URI'])['path'],'/');
  5. set_include_path(get_include_path().':'.__DIR__);
  6. if(file_exists($root.$path)){
  7. if(is_dir($root.$path)&& substr($path,strlen($path)-1,1)!=='/') $path = rtrim($path,'/').'/index.php';
  8. if(strpos($path,'.php')===false)
  9. return false;
  10. else{
  11. chdir(dirname($root.$path));
  12. require_once $root.$path;
  13. }
  14. }else
  15. include_once 'index.php';

替换这四个文件,运行docker-compose up(你的wordpress路径下),它将pull并构建我们需要的镜像,稍后启动web和数据库容器。你将可以通过你docker daemon上的8000端口访问wordpress。(如果你使用的是boot2docker,boot2docker ip将告诉你它的IP地址)。

Compose documentation

Installing Compose

User guide

Command line reference

Yaml file reference

Compose environment variables

Compose command line completion