date && docker-compose build && docker-compose up -d && date
,总共费用 1 分钟 07 秒。代码里面有注释,应该很容易看懂,可以直接改,然后运行
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
1
penjianfeng 2016-09-28 13:29:02 +08:00
非常赞
|
2
cxbig 2016-09-28 13:43:39 +08:00
缺一个 xdebug
|
3
gouchaoer 2016-09-28 13:56:39 +08:00 via Android
问题一大堆。。。最大的问题,你在生产环境用 docker-compose 是不对的,这意味着你要在生产环境 git pull 。。。第二代码更新你没考虑。。。第三, nginx 放容器有一些缺点,我不说你自己也可以体会到。。。
这是一个失败的 docker 方案 |
4
gouchaoer 2016-09-28 13:59:17 +08:00 via Android
php 的 docker 部署方案首先不能在生产环境 git pull 然后 build docker 镜像,其次需要考虑源码更新,你的方案只能做开发环境
|
6
youwater OP @gouchaoer 本来就是:我希望做一个超轻量级的全功能 php 开发测试环境配置包。生产环境一定是高度定制的好,这个包的目标不是生产环境。
|
8
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 |
9
qweweretrt515 2016-09-28 16:18:04 +08:00
+1
|
10
qweweretrt515 2016-09-28 16:19:31 +08:00
dphp/volumes/apps/localhost/ 网站代码放在这里面吗
|
11
qweweretrt515 2016-09-28 16:23:00 +08:00
|
12
youwater OP @qweweretrt515 放在 dphp/volumes/apps/ 下面,可以参照 dphp/nginx/conf/vhosts.conf 来配置你的虚拟主机哦。
|
13
youwater OP @qweweretrt515 生产环境感觉不是太适合做成通用的,若有需要你可以根据自己的需求调整配置参数。
|
14
gouchaoer 2016-09-28 19:48:49 +08:00 via Android 1
@qweweretrt515 都用 docker 了,开发环境和生产环境不一致不是自己给自己添麻烦么。。。
我摸索出来的 php 生产环境部署方案: nginx 用原生的, php-fpm 和源码放进同一个 docker 镜像中,启动容器的时候-v app :/app 这样,然后 exec 进容器 copy 源码到 /app 下。代码更新直接在容器中启动 crond git pull 就完了。这个方案没用数据卷和 compose ,甚至还违背了一个容器干一件事的原则,但是它的好处你实际操作就会体会到了。 @amd00 你测试环境敢和生产环境不一样? |
15
youwater OP @gouchaoer docker 容器内部的环境比如 linux 软件包、 php 版本、扩展配置等是一致的。但是开发环境一般都是单机的,服务器生产环境很可能需要大批量复制做分布式计算,所以不可能用同一个配置包。 dphp 只是用来方便做开发测试,生产环境可以以这个为基础根据需求场景去修改。
dphp 的配置方案把程序、数据库、配置文件、日志都放在 host 主机,这样整个开发过程可以不需要进入到容器去操作,对新手会方便很多。 再次声明: dphp 的初衷只是为了解决开发环境的配置问题,不要用生产环境往 dphp 上面去套。 |
16
gouchaoer 2016-09-28 20:18:13 +08:00 via Android
@youwater 我也这么想过,然后我发现你 php-fpm 分布式不大现实(你 nginx 的 upstream 怎么设?更新难道直接更新整个 docker 镜像?),穿参数通过环境变量传实际操作也挺麻烦的。。。。嘛,找到适合自己的最好
|
17
gouchaoer 2016-09-28 20:19:30 +08:00 via Android
docker 对我 php 来说主要有 2 点好处,一个解决 php 环境问题,再一个就算被拿 webshell 也不用担心主机更安全
|