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

2016-09-28 11:44:16 +08:00
 youwater

版本: 1.04 更新记录

为什么要做这个配置包?

配置原则

效果如何?

模块组成

开始使用

配置调整

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

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

疑问与解答

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

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

9695 次点击
所在节点    程序员
17 条回复
penjianfeng
2016-09-28 13:29:02 +08:00
非常赞
cxbig
2016-09-28 13:43:39 +08:00
缺一个 xdebug
gouchaoer
2016-09-28 13:56:39 +08:00
问题一大堆。。。最大的问题,你在生产环境用 docker-compose 是不对的,这意味着你要在生产环境 git pull 。。。第二代码更新你没考虑。。。第三, nginx 放容器有一些缺点,我不说你自己也可以体会到。。。

这是一个失败的 docker 方案
gouchaoer
2016-09-28 13:59:17 +08:00
php 的 docker 部署方案首先不能在生产环境 git pull 然后 build docker 镜像,其次需要考虑源码更新,你的方案只能做开发环境
amd00
2016-09-28 14:47:46 +08:00
@gouchaoer 上文或者标题提到的是开发测试环境,跟生产环境无关
youwater
2016-09-28 14:48:25 +08:00
@gouchaoer 本来就是:我希望做一个超轻量级的全功能 php 开发测试环境配置包。生产环境一定是高度定制的好,这个包的目标不是生产环境。
youwater
2016-09-28 14:52:51 +08:00
@cxbig 这个是应该加进来比较合适, xdebug 还是蛮通用的。回头我改一下。
Havee
2016-09-28 15:18:48 +08:00
我一直不懂的是
一些人喜欢用 ENV ,却在 build 阶段,不能在 docker run 时的 ENV 有何用?

建议
ARG a=string_a
ENV b string_b

ARG 变量在 RUN 语句中使用

ENV 变量在 ENTRYPOINT 或 CMD 语句中使用

例子

https://github.com/iHavee/dockerfiles/tree/master/nginx/mainline
qweweretrt515
2016-09-28 16:18:04 +08:00
+1
qweweretrt515
2016-09-28 16:19:31 +08:00
dphp/volumes/apps/localhost/ 网站代码放在这里面吗
qweweretrt515
2016-09-28 16:23:00 +08:00
@gouchaoer
@youwater 求一个生产环境的案例
youwater
2016-09-28 16:44:47 +08:00
@qweweretrt515 放在 dphp/volumes/apps/ 下面,可以参照 dphp/nginx/conf/vhosts.conf 来配置你的虚拟主机哦。
youwater
2016-09-28 16:45:34 +08:00
@qweweretrt515 生产环境感觉不是太适合做成通用的,若有需要你可以根据自己的需求调整配置参数。
gouchaoer
2016-09-28 19:48:49 +08:00
@qweweretrt515 都用 docker 了,开发环境和生产环境不一致不是自己给自己添麻烦么。。。

我摸索出来的 php 生产环境部署方案:
nginx 用原生的, php-fpm 和源码放进同一个 docker 镜像中,启动容器的时候-v app :/app 这样,然后 exec 进容器 copy 源码到 /app 下。代码更新直接在容器中启动 crond git pull 就完了。这个方案没用数据卷和 compose ,甚至还违背了一个容器干一件事的原则,但是它的好处你实际操作就会体会到了。

@amd00 你测试环境敢和生产环境不一样?
youwater
2016-09-28 20:03:22 +08:00
@gouchaoer docker 容器内部的环境比如 linux 软件包、 php 版本、扩展配置等是一致的。但是开发环境一般都是单机的,服务器生产环境很可能需要大批量复制做分布式计算,所以不可能用同一个配置包。 dphp 只是用来方便做开发测试,生产环境可以以这个为基础根据需求场景去修改。

dphp 的配置方案把程序、数据库、配置文件、日志都放在 host 主机,这样整个开发过程可以不需要进入到容器去操作,对新手会方便很多。

再次声明: dphp 的初衷只是为了解决开发环境的配置问题,不要用生产环境往 dphp 上面去套。
gouchaoer
2016-09-28 20:18:13 +08:00
@youwater 我也这么想过,然后我发现你 php-fpm 分布式不大现实(你 nginx 的 upstream 怎么设?更新难道直接更新整个 docker 镜像?),穿参数通过环境变量传实际操作也挺麻烦的。。。。嘛,找到适合自己的最好
gouchaoer
2016-09-28 20:19:30 +08:00
docker 对我 php 来说主要有 2 点好处,一个解决 php 环境问题,再一个就算被拿 webshell 也不用担心主机更安全

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/309469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX