当前位置: > Linux服务器 > Docker >

深入浅出Docker(五):基于Fig搭建开发环境(2)

时间:2014-12-30 14:21来源:linux.it.net.cn 作者:IT


 

5. Wordpress开发环境配置详解

Fig一样可以应付PHP应用的开发需求。

首先,创建一个Dockerfile来支持生成开发用Image。


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

以上这条命令创建名为 wordpress 的目录。进入到此目录,创建镜像文件 Dockerfile,内容如下:


  1. FROM stackbrew/ubuntu:13.10
  2. RUN apt-get update && apt-get install php5 php5-mysql -y
  3. ADD . /code

下一步创建 fig.yml,它将定义出web服务和mysql db服务。


  1. web:
  2. build: .
  3. command: php -S 0.0.0.0:8000 -t /code
  4. ports:
  5. - "8000:8000"
  6. links:
  7. - db
  8. volumes:
  9. - .:/code
  10. db:
  11. image: mysql
  12. environment:
  13. MYSQL_DATABASE: wordpress
  14. MYSQL_ROOT_PASSWORD: wordpress

wordpress有一个支持文件需要修改,它是wp-config.php:


  1. <?php
  2. define('DB_NAME', 'wordpress');
  3. define('DB_USER', 'root');
  4. define('DB_PASSWORD', 'wordpress');
  5. define('DB_HOST', getenv("DB_1_PORT_3306_TCP_ADDR") . ":" . getenv("DB_1_PORT_3306_TCP_PORT"));
  6. define('DB_CHARSET', 'utf8');
  7. define('DB_COLLATE', '');
  8.  
  9. define('AUTH_KEY', 'put your unique phrase here');
  10. define('SECURE_AUTH_KEY', 'put your unique phrase here');
  11. define('LOGGED_IN_KEY', 'put your unique phrase here');
  12. define('NONCE_KEY', 'put your unique phrase here');
  13. define('AUTH_SALT', 'put your unique phrase here');
  14. define('SECURE_AUTH_SALT', 'put your unique phrase here');
  15. define('LOGGED_IN_SALT', 'put your unique phrase here');
  16. define('NONCE_SALT', 'put your unique phrase here');
  17.  
  18. $table_prefix = 'wp_';
  19. define('WPLANG', '');
  20. define('WP_DEBUG', false);
  21.  
  22. if ( !defined('ABSPATH') )
  23. define('ABSPATH', dirname(__FILE__) . '/');
  24.  
  25. require_once(ABSPATH . 'wp-settings.php');

以上三个文件都修改后,就可以在此目录下运行 fig up来启动wordpress。可以使用浏览器访问localhost:8000 浏览Wordpress首页。

6. 结论

通过Fig来构建基于Docker的开发环境可以让我们的开发事半功倍。其实如果读者按照我的步骤一步一步搭建开发环境,仍然会有很多挑战。

首先,因为国内带宽的限制,从官方下载Image是一个长时间等待的过程。即使Docker公司已经使用了CDN服务,但在国内网络使用仍然很慢。为了能快速下载,我还常备一条VPN线路作为数据通道来下载Image。目前这是最理想的方式,可以节省很多开发时间。

第二,fig up并不能保证Image能一次成功。但不需要灰心。你可以fig run web /bin/bash直接到容器里面调试。我遇到过多次费解的问题都是直接在里面跑命令解决的。当你退出时,fig会自动更新到相应的Image里。当你再次fig up,它会使用新Image去创建这个运行容器。

第三,fig up会创建两个以上的容器实例,在退出容器后再次启动fig up,并不会重用之前退出的容器实例,而是新建容器实例。像fig up这类常用命令运行多次之后会导致过期的容器文件仍然存储在你的开发机器上并占用硬盘空间,并且Fig还没有提供对应的命令自动清理它们。目前可以解决的办法是直接使用Docker rm/rmi命令手工清除。

以上总结出的实战经验,仍然不能掩盖Fig特有的亮点:运用Fig可以定义统一运行步骤,让部署环境可以完全的隔离在一个独立的容器环境里,并且这个隔离环境可以在开发、测试、生产多个步骤中保持一致。当前Fig项目还很年轻,需要大家多参与项目的讨论,提出自己的问题才能让Fig更好使用,更多信息可以到这里查阅。











(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容