在 2 分钟内极速构建超轻量级 docker + PHP 全功能开发测试环境
33

最新版已更新到 https://github.com/gnulife/dphp

先看效果如何

  • 整个配置包,72KB.
  • 在【macbook pro 15 英寸,2014 年中】电脑,电信20M宽带中执行date && docker-compose build && docker-compose up -d && date,总共费用1分钟07秒。
  • 总共生成4个镜像,合计:282MB

模块组成

  • alpine 最新版为基础包,目前是3.4
  • nginx 1.10.1
  • mariaDB 10.1.17 兼容mysql 5.6
  • php 5.6.26

版本:1.04 更新记录

  • 将nginx、php日志也放在host主机volumes/apps/logs/下,方便调试
  • 增加php.ini中max_execution_time的配置
  • 增加php composer包,修改为从国内镜像下载
  • 增加在host主机中php、composer别名指向到phpfpmp容器,这样可以实现本地完全不需要安装任何php相关组件

为什么要做这个配置包?

  • 以前一直使用virtualbox+ubuntu虚拟机环境来搭建php开发环境,配置慢,不利于共享
  • 前一段时间采用Docker配置,官方很多包默认采用ubuntu为底包,包很大,还是不利于共享,我配置好完整的LNMP Docker image有1G多
  • 后来了解到alpine,一个轻量级的linux发行版,小到5M的底包,docker build速度非常快,所以就有了自己做一个开发环境配置包的想法。
  • 我希望做一个超轻量级的全功能php开发测试环境配置包。

配置原则

  • 尽可能小,保持alpine的优势
  • 尽可能少改动,保持原生docker+alpine的优势
  • 默认采用中国大陆国内镜像,加速docker build的过程
  • 默认采用Asia/Shanghai时区,国人开发更方便
  • 默认配置好nginx多虚拟主机环境,可以在host主机按范本修改虚拟主机配置以满足自己的需求
  • 默认配置好php-fpm环境,gd、mcrypt等常见模块均可直接使用
  • 配置文件、程序开发代码、数据、日志均放在host主机,通过volume挂载到相应容器,并可跨容器共享访问

开始使用

配置调整

代码里面有注释,应该很容易看懂,可以直接改,然后运行

docker-compose build && docker-compose up -d

疑问与解答

  • 为什么我build的速度很慢?根本达不到文中所说的速度?

    整个镜像包的build过程已全部配置成国内镜像,理论上速度是非常快的,docker本身也要配置成采用国内镜像,方法可自行搜索:docker 国内加速。每台电脑、网络环境都不一样,上面的时间是我在我的电脑上电信20M宽度环境下的build速度,仅供参考。

  • 我在windows下mysql容器无法正常运行,提示:

    standard_init_linux.go:175: exec user process caused "no such file or directory"

    这是因为git for windows的默认设置会强制将代码换行符强行转为dos格式,需要修改设置后重新git clone:

    git config --global core.autocrlf false

  • 其他有关docker基本概念和环境配置请自行搜索解决。

可能还有一些不完善,有什么意见建议欢迎与我联系。

有什么问题可以提交issue,或者加dphp交流QQ群讨论,群号:515731883

本帖已被设为精华帖!
本帖由系统于 2年前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 20

alpine 不到5M,好小~~

2年前

@qloog alpine确实非常适合拿来做docker基础包,小,build的时候速度特别快。有新闻说docker官方准备用alpine来逐步替换ubuntu做基础包。

2年前

这个跟Vagrant比优势如何?

2年前

@Payne 软件包小,build速度快,运行省资源。保留同样的可灵活定制性

2年前

Laravel5.3要求 PHP >= 5.6.4

2年前

@Payne 这个包带的是php 5.6.26,跑laravel5.3没问题的

2年前

@GNULife 这是Laravel官网上的要求[ https://laravel.com/docs/5.3 ],可能其中一些组件有这个要求吧

2年前

@Payne 我这里的一个项目就是跑laravel 5.3哦,完全没问题的。你是有碰到什么错误提示吗?

2年前

好东西,赞一个!

2年前

@Macken 这是因为网络不好,在Dockerfile里面最前面就有执行过apk update &&apk upgrade的,你可以删除image后重试,实在不行的话,换国外镜像试试。

2年前

文中提到兼容mysql 5.6是什么意思呢,安装完有MySQL么?

2年前

@至尊宝 应该没有 MySQL,用的是 mariaDB, 它是MySQL的一个分支,并且与 MySQL 兼容。

2年前

ERROR: Service 'phpfpm' failed to build: The command '/bin/sh -c apk add php5 php5-fpm php5-opcache php5-intl php5-mcrypt php5-openssl php5-gmp php5-json php5-dom php5-pdo php5-zip php5-zlib php5-mysql php5-mysqli php5-bcmath php5-gd php5-xcache php5-pdo_mysql php5-gettext php5-xml php5-xmlreader php5-xmlrpc php5-bz2 php5-memcache php5-iconv php5-curl php5-ctype php5-phar openssl' returned a non-zero code: 28
报这个错误

2年前

@fanly 应该有更完整的提示,我估计是网络原因引起,你可以换个alpine镜像试试。

2年前

@GNULife

ERROR: unsatisfiable constraints:

php5 (missing):

required by: world[php5]

php5-bcmath (missing):

2年前

@fanly 你可以参照 https://github.com/gnulife/dphp/blob/master/docker%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5%E5%92%8C%E5%91%BD%E4%BB%A4%E6%93%8D%E4%BD%9C.md 把容器和镜像删除,然后重试,这样可以避免缓存的原因引起的问题,还有还是怀疑你这个跟mirror有关,你换一个服务器试一下。

2年前

@GNULife 运行后网页请求比较慢,有办法优化么?调高docker-machine 的配置?

1年前
Jourdon

这个要怎么解决啊
file

1年前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!