LNMP Dockerfile
基于最新版CentOS官方镜像
包含php, java, nginx, mysql, reids, openssh server, go, crond, swoole, mongodb, adminMongo, node.js, phpmyadmin, phpredisadmin, xhprof, maven等服务。
简介
默认包含的版本
-
php (默认7.2.8)
-
java (默认1.8,当前仅支持1.8)
-
nginx (默认1.15.2版本,默认web根目录在/usr/local/nginx/html)
-
mysql (默认5.7.23)
-
redis(默认4.0.11版本,默认密码123456)
-
openssh server (默认root密码123456)
-
crond
-
phpmyadmin (默认版本4.7.6, 管理地址: http://nginx默认站点或域名/phpmyadmin)
-
phpredisadmin (管理地址::http://nginx默认站点域名或ip/phpredisadmin。管理用户名为admin,密码同redis密码)
-
xhprof
-
go语言 (默认1.13 GOPATH环境变量已设置为$HOME/go,映射到此文件夹即可。1.11版本后开启vgo映射任何目录均可)
-
node.js (默认10.16.3)
-
mongodb (默认4.0.1)
-
adminMongo (管理地址: http://nginx默认站点域名或ip/adminMongo。默认没有密码,且设置为中文)
-
maven (默认3.6.2)
docker build的时候加入 --build-arg PHP_VER=php版本号 --build-arg JKD_VER=jdk版本号 --build-arg NGINX_VER=nginx版本号 --build-arg MYSQL_VER=mysql版本号 --build-arg REDIS_VER=reids版本号 --build-arg PHPMYADMIN_VER=phpmyadmin版本号 --build-arg REDIS_VER=redis密码(phpredisadmin同此) --build-arg ROOT_PASSWORD=ssh的root密码 --build-arg GO_VER=go语言版本 --build-arg NODE_VER=node.js语言版本 --build-arg MONGODB_VER=mongodb版本 --build-arg MAVEN_VER=maven版本 可以指定php,nginx,redis,phpmyadmin的安装版本, redis(phpredisadmin)和ssh的密码
获取镜像
-
远程获取镜像(推荐)
$ git clone https://github.com/liufee/docker.git $ cd /path/to/docker $ docker pull registry.cn-hangzhou.aliyuncs.com/liufee/feehi
P.S虽然通过远程获取仓库获取镜像,但是还是建议clone本仓库到本地,因为docker run容器时-v挂载目录把配置文件映射进去
-
自行构建
$ git clone https://github.com/liufee/docker.git $ cd /path/to/docker $ docker build -t liufee/feehi ./
P.S
自行构建,如果某一步骤失败, 再来一次。(因为你懂的原因,pecl.php.net,phpmyadmin.net,repo.mysql.com不稳定,造成下载某些扩展的时候失败退出。windows下使用ss代理切记勾选全局使用代理并重启cmd)
强烈建议在执行cd /path/to/docker命令前,执行export http_proxy=http://ip:1087;export https_proxy=http://ip:1087;伟大的GFW,最好带个梯子。ip通常为127.0.0.1
运行容器
$ docker run -h feehi -p 80:80 -p 23:22 -p 3306:3306 -p 6379:6379 -p 27017:27017 --name feehi -itd -v /path/to/docker/etc/nginx:/etc/nginx -v /path/to/docker/data/mysql:/data/mysql -v /path/to/docker/data/mongodb:/data/mongodb -v /path/to/docker/data/log:/var/log -v /path/to/default-nginx-website:/usr/local/nginx/html -v /your-work-directory:/your-work-directory liufee/feehi
P.S
若使用远程获取镜像请将liufee/feehi修改成registry.cn-hangzhou.aliyuncs.com/liufee/feehi 默认web目录为/usr/local/nginx/html,若需要配置多个vhost可以映射其他web目录进去.如: -v /path/to/sites:/www,然后在/etc/nginx/site.d中增加vhost配置
xhprof使用方法
xhprof_enable();
//你需要分析的代码
$xhprof_data = xhprof_disable();
include_once 'xhprof_lib/utils/xhprof_lib.php';//注xhprof_lib已经在/usr/local/php/lib/php中了
include_once 'xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_test");
//将run_id保存起来或者随代码一起输出
然后访问:http://nginx默认站点或域名/xhpfrof_html/index.php?run=run_id&source=xhprof_test查看结果
注意
- 为了持久化保存数据,最好把宿主机某一目录挂载到容器内的/mysql。
- 每次启动容器的时候,都会判断/mysql目录是否为空,为空则初始化mysql服务并修改root密码为docker run -e MYSQL_PASSWORD=xxx的值,若没有指定默认修改为123456, host='%',需要重置mysql直接清空/mysql目录重新启动容器即可。