

使用 Docker 秒速搭建多版本 PHP 开发环境
source link: https://segmentfault.com/a/1190000040282809
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

文章中使用的软件:
- Mac:11.4(macOS Big Sur) ,处理器为:Intel Core。
- Docker:3.3.3
- 支持 PHP 5.6.x 环境
- 支持 PHP 7.2.x 环境
Docker 软件下载安装,不做过多解释,一步步安装即可。
下载地址:https://www.docker.com/produc...
"registry-mirrors" : [
"http://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
PHP 7.2.x,占用本地端口 8081
- 启动 docker;
- 下载压缩包:php7-2-x.zip 并进行解压;
- 进入到 php7-2-x 目录,直接运行
docker-compose up
即可; - 浏览器输入:http://127.0.0.1:8081/;
PHP 5.6.x,占用本地端口 8082
- 启动 docker;
- 下载压缩包:php5-6-x.zip 并进行解压;
- 进入到 php5-6-x 目录,直接运行
docker-compose up
即可; - 浏览器输入:http://127.0.0.1:8082/;
local.php72.com -> 127.0.0.1:8081
因为在 /etc/hosts
文件中不能做端口映射,需要借助其他工具。
我借助的工具为 Chrome 浏览器插件:Simple Proxy
。
下载方式:
- Chrome 应用商店下载,搜索
Simple Proxy
。 - 加载本地扩展程序,下载地址:chrome-simply-proxy
看下安装好界面:
配置成功后,访问 http://local.php72.com/
local.php56.com -> 127.0.0.1:8082
docker-compose 相关命令
- docker-compose up 构建容器 参数[-d]为后台运行
- docker-compose start 启用容器
- docker-compose stop 停止容器
- docker-compose restart 重启容器
- docker-compose down 删除容器
- docker-compose ps 查看当前容器状态
php7-2-x 目录介绍
.
├── docker-compose.yml
├── log
│ └── nginx
│ └── local.php72.com_access.log
├── phpdocker
│ ├── README.html
│ ├── README.md
│ ├── nginx
│ │ └── default.conf
│ └── php-fpm
│ ├── Dockerfile
│ └── php-ini-overrides.ini
└── web
└── phpinfo
└── index.php
1、docker-compose.yml,容器编排的配置文件,文件无需更改。
version: "3.1"
services:
webserver:
image: nginx:alpine
container_name: php7-2-x-webserver
working_dir: /application
volumes:
- .:/application
- ./phpdocker/nginx:/etc/nginx/conf.d
ports:
- "8081:80"
php-fpm:
build: phpdocker/php-fpm
container_name: php7-2-x-php-fpm
working_dir: /application
volumes:
- .:/application
- ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
2、log/nginx 为日志目录,包含 _access.log 和 _php_errors.log,* 为配置的虚拟域名。
3、phpdocker/nginx 为虚拟域名配置目录,其中 default.conf 配置的虚拟域名为 local.php72.com,不过多解释,大家一看就懂,其他目录和文件无需调整。
server {
listen 80;
server_name local.php72.com;
client_max_body_size 108M;
access_log /application/log/nginx/${server_name}_access.log;
root /application/web/phpinfo;
index index.php;
# try to serve file directly, fallback to index.php
location / {
try_files $uri /index.php$is_args$args;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/application/log/nginx/${server_name}_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}
4、web 为代码仓库目录,其中 phpinfo 为域名 local.php72.com 指向的代码目录。
如果想要新增虚拟域名(local.abc.com)配置时,只需 3 步:
- 将代码文件夹 abc 放到 web 目录下;
- 新增文件 local.abc.com.conf,在配置文件中将代码目录指向到 abc 目录;
- 重启容器 docker-compose restart;
php5-6-x 目录介绍
zip 文件如何生成的?
大家可能会有疑问,zip 文件如何生成的,如果我想搭建其他版本的环境怎么办?
这些文件是在线生成的,网址:https://phpdocker.io/generator
支持的 PHP 版本有:5.6.x
、7.0.x
、7.1.x
、7.2.x
、7.3.x
、7.4.x
等。
同时还支持 MySQL
、MariaDB
、Elasticsearch
等。
按需选择后,点击 Generate project archive
即可生成压缩包。
上面的 php5-6-x.zip 和 php7-2-x.zip 就是这种方式生成的,仅仅是对其进行微调,比如配置 log 目录,web 目录等。
更多功能,大家去探索吧。
下载文章中用到的 zip 文件,请在「新亮笔记」公众号内回复:phpdocker 即可。
Recommend
-
78
机场有什么 - 秒速解锁机场隐藏服务 - NEXT
-
5
被踹翻后秒速爬起!浙大机器狗“绝影”展现新绝技,在陌生环境下八技合一、随机应变 | 专访-《麻省理工科技评论》中文网被踹翻后秒速爬起!浙大机器狗“绝影”展现新绝技,在陌生环境下八技合一、随机应变 | 专访 被踹翻后秒速爬起...
-
10
UEFI开发探索62-环境搭建4(总结EDK2各种版本) 请保留-> 【原文: https://blog.csdn.net/luobing4365 和 http://yiiyee.cn/blog/au...
-
8
剃须刀对于男生来说是不可或缺的生活物品。笔者记得很早的时候使用手动剃须刀,刀片非常锋利,使用时总会出现被刮伤的情况,所以对手动剃须刀真的是不建议!外加现在的电动剃须刀做的越来越精致,不仅没有了以往传统电动剃须刀的大身板和容易受伤的设计,而且外...
-
14
如何使用Docker搭建开发环境发布于 22 分钟前知道一个事物和实现这个事物是完全不同的事情。从Docker诞生那天开始,我们就梦想着诸如“15秒部署一个项目”,“版本可控...
-
8
国际会话小能手!精通83种语言秒速翻译,轻松和歪果仁侃大山-极果 国际会话小能手!精通83种语言秒速翻译,轻松和歪果仁侃...
-
5
我是一个美食摄影师,每天会对各种颜值高的美食进行咔嚓、咔嚓。工作忙起来都没有时间吃饭、更没有时间喝水,而且夏天来了,非常燥热,搞得我没有啥胃口,要是可以有一个既能制作冰镇果饮让我清爽一夏,还能炖煮开胃粥或养生花茶的全能机器就更好了!
-
4
作为上班一族,对于可以快速制作美味的工具真的非常喜欢,要是可以放在办公室里就更好了。只要一上班,就会感觉每天时间都过得好快,而且做粥或者果蔬汁都特别费时间,更是不可能,所以就经常在外面买一些奶茶饮料喝,好喝又管饱,不太健康也只能忍了...直到最...
-
7
我是一个数码发烧玩家,日常使用的手机、平板、PC之类的电子产品都喜欢赶在潮流的第一线,以至于家里堆满了各种智能化的电子产品,但却一直忽略了日常出门最需要的硬件,那就是汽车智能配件。不管是倒车时需要的高清后视镜,还是开车远途需要的娱乐设备...
-
3
...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK