iOS首页投稿(暂停使用,暂停投稿)程序员

mac上安装实践docker搭建外包开发平台

2016-04-20  本文已影响646人  化猿

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。他很轻巧,CPU/内存低消耗,所也笔者选择了docker作为虚拟化工具

1.安装for Mac

从官网下载dockerDocker Toolbox,下载完成,点下一步下一步就安装好了是不是很简单。

2.构建镜像

docker search [name]  #查找官网提供的镜像
docker pull busybox  #安装官网提供的镜像

3.构建php开发环境

使用Dockerfile文件

# 从官方PHP镜像构建
FROM       php

# 将index.php复制到容器内的/var/www目录下
ADD        index.php /var/www/

# 对外暴露8080端口
EXPOSE     8080

# 设置容器默认工作目录为/var/www
WORKDIR    /var/www/

# 容器运行后默认执行的指令
ENTRYPOINT ["php", "-S", "0.0.0.0:8080"]

构建容器

docker build -t allovince/php-helloworld .

运行这个容器

docker run -d -p 8080:8080 allovince/php-helloworld

安装更多的服务

FROM       php
ADD        index.php /var/www/

# 安装更多服务
RUN        apt-get install -y \
           mysql-server \
           nginx \
           php5-fpm \
           php5-mysql

# 编写一个启动脚本启动所有服务
ENTRYPOINT ["/opt/bin/php-nginx-mysql-start.sh"]

这种安装方式会有也下问题:

  1. 如果需要验证某个服务的不同版本,比如测试PHP5.3/5.4/5.5/5.6,就必须准备4个镜像,但其实每个镜像只有很小的差异。
  2. 如果开始新的项目,那么容器内安装的服务会不断膨胀,最终无法弄清楚哪个服务是属于哪个项目的

使用单一的容器安装方式:

FROM ubuntu:14.04
RUN  apt-get update -y && apt-get install -y nginx

FROM ubuntu:14.04
RUN  apt-get update -y && apt-get install -y mysql
这种方式的优点在于所有服务可以有一个统一的基础镜像,对镜像进行扩展和修改时可以使用同样的方式,比如选择了ubuntu,就可以使用apt-get指令安装服务。

这种方式的优点在于所有服务可以有一个统一的基础镜像,对镜像进行扩展和修改时可以使用同样的方式,比如选择了ubuntu,就可以使用apt-get指令安装服务。

问题在于大量的服务需要自己维护,特别是有时候需要某个服务的不同版本时,往往需要直接编译源码,调试维护成本都很高。

参考

Docker在PHP项目开发环境中的应用

基于 Docker 的 PHP 开发环境

上一篇下一篇

猜你喜欢

热点阅读