基于docker, 快速搭建Nginx+Php+https本地开发环境, 免于手动安装PHP扩展

17次阅读

共计 1956 个字符,预计需要花费 5 分钟才能阅读完成。

NginxPhpDocker 是什么, 主要解决什么问题
基于 docker, 快速搭建 Nginx+Php 本地开发环境(已含常用 PHP 扩展), nginx、php 配置文件, 日志文件和 php 工程代码都在宿主机上, 方便修改.
可以解决:

新人加入团队, 配置 LNMP 麻烦, 而且是重复劳动
prod, staging, local 开发环境不一致, local 没问题, 上了 staging,prod 出现各种问题
php 扩展安装有问题, 比如: mac 电脑, 本地多个 php 版本, 扩展不一致(eg: memcache, memcached)
项目新功能需要安装新扩展, 所有开发者都要安装一遍

NginxPhpDocker github url
1. 如何使用呢?
1.1 download code
git clone git@github.com:weiwenwang/NginxPhpDocker.git
cd NginxPhpDocker
1.2 启动 php 容器
docker run -it -d \
–name myphp \
-v $PWD/www/php:/www/php \
-v $PWD/www/example:/www/example \
–privileged=true \
wangnan188/nginx-php-docker:v7.2-v1
1.3 启动 nginx 容器
docker run -it -d \
-p 80:80 \
-p 443:443 \
-v $PWD/nginx-conf/conf.d:/etc/nginx/conf.d \
-v $PWD/nginx-conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/www/html:/www/html \
-v $PWD/www/example:/www/example \
-v $PWD/ssl/server.crt:/etc/nginx/ssl/server.crt \
-v $PWD/ssl/server.key:/etc/nginx/ssl/server.key \
-v $PWD/log/nginx:/var/log/nginx/ \
–link=myphp:myphp_alias \
–privileged=true \
–name=mynginx nginx
1.4 注意事项,非常重要

1.2, 1.3 的两个指令必须在 NginxPhpDocker 目录下执行
PHP 代码的文件夹, 必须挂在到 PHP 容器里面, 有小伙伴使用的时候挂到 nginx 容器里面了, nginx 和 PHP 俩容器是隔离的, php 只会按地址在他们自己的容器里面找文件, 和 nginx 只是通过 fastcgi 通信, nginx 告诉 php 用户请求的文件地址, php 在自己的容器去找对应的文件

1.5 执行 1.2、1.3 之后效果是什么样子的呢?

3. 如何把现有的项目跑起来呢?
这里我举例个例子,假如我们现在的项目 (thinkphp_3.2.3_full) 就是 thinkphp 框架写的, 我如何把它运行起来呢? 第一步: 把代码放在 www/example/ 目录下 第二步: 添加配置文件 nginx-conf/conf.d/example-thinkphp.conf, 剩下的就是单纯的 nginx 配置问题了. 本地做一个 host 绑定: “127.0.0.1 thinkphp-full.com” 浏览器访问: http://thinkphp-full.com/inde…

4. wangnan188/nginx-php-docker 现在包含了哪些 extension 呢?

extension
status
remark

extension
status
remark

Core
YES


redis
YES

ctype
YES


gd
YES

curl
YES


xdebug
YES

date
YES


mongodb
YES

dom
YES


swoole
YES

fileinfo
YES


memcached
YES

filter
YES


memcache
NO

ftp
YES

hash
YES

iconv
YES

json
YES

libxml
YES

mbstring
YES

mysqlnd
YES

openssl
YES

pcre
YES

PDO
YES

pdo_sqlite
YES

Phar
YES

posix
YES

readline
YES

Reflection
YES

session
YES

SimpleXML
YES

sodium
YES

SPL
YES

sqlite3
YES

standard
YES

tokenizer
YES

xml
YES

xmlreader
YES

xmlwriter
YES

zlib
YES

5. 其他
后续 php extensions 有补充, 可能不能及时更新此文章, 最新版本请移步: github

正文完
 0