docker:用官方镜像在本地搭建PHP开发环境
远离搭建环境的烦恼,使用docker官方镜像也能简单搭建本地开发环境(可配置多站点,可灵活切换多个php版本)。本文全是干货,无脑按步骤操作即可。
第一步:在本地创建一个工作目录,目录结构如下:
lnmpnginxconfvhostdefault.conflogsredisdatalogredis.conf # 需要自己去下载redis.conf文件内容https://redis.io/topics/config,我这边是6.2版本 protected-mode no 设置成no,logfile 改为"/dev/log",# bind 127.0.0.1注释掉,requirepass 'xxxx'设置密码www # 项目代码存放目录docker-compose.yml
docker-compose.yml的内容:
services:nginx:image: nginxrestart: alwaysports:- "8000:80"volumes: - ~/www/docker/lnmp/www:/usr/share/nginx/html- ~/www/docker/lnmp/nginx/conf:/etc/nginx/conf.d- ~/www/docker/lnmp/nginx/logs:/var/log/nginxnetworks:- dnmpcontainer_name: nginx_testphp:image: php:7.3-fpmrestart: alwaysvolumes:- ~/www/docker/lnmp/www:/www# - ~/www/docker/lnmp/php/conf:/usr/local/etc/phpnetworks:- dnmpcontainer_name: php_testredis:image: redis:6.2restart: alwaysports:- "6378:6379"volumes:- ~/www/docker/lnmp/redis/data:/data# 需要自己去下载redis.conf文件内容https://redis.io/topics/config,我这边是6.2版本- ~/www/docker/lnmp/redis/redis.conf:/etc/redis.conf- ~/www/docker/lnmp/redis/log:/dev/log #默认redis的日志路径networks:dnmp:ipv4_address: 172.20.3.4 # 为redis容器指定ipcontainer_name: redis_test
networks: dnmp: #可手动创建网络 docker network create --subnet=172.20.3.0/24 lnmp_dnmpipam:config:- subnet: 172.20.3.0/24 # 本机ip的网络段
nginx的default.conf内容:
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm index.php;try_files $uri $uri/ /index.php?$query_string;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {fastcgi_pass php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;include fastcgi_params;}
}
第二步:打开终端,执行:
cd ~/www/docker/lnmp # 进入工作目录(docker-composer.yml所在目录)
docker-compose up -d # 执行docker-compose.yml内容
再执行
docker ps
可以看到我们本地多了三个容器分别是nginx_test、php_test、redis_test。
此时,最基础的开发环境就已经搭建好了,可以在lnmp/www目录中新建index.php,浏览器打开网址:localhost:8000,查看效果。
第三步:为php容器安装项目运行所需扩展:
完成前两步,虽然可以解析一些简单的PHP脚本,但是对于网校的开发还缺少一些扩展。所以我们还要手动安装部分扩展。
docker exec -it php_test /bin/bash
docker-php-ext-install sockets pdo_mysql
至此,本地的开发环境虽然可以用,但还不满足我们的日常开发需求。接下来就简单的处理一下nginx的配置,以支持多站点运行。
第四步:nginx多站点配置
在default.conf文件中加入
include /etc/nginx/conf.d/vhost/*.conf;
在vhost目录中新建文件www.xxx.com.conf
server {listen 80; # 监听端口server_name www.xxx.com; # 站点域名location / {root /usr/share/nginx/html/www.xxx.com/public;index index.html index.htm index.php;try_files $uri $uri/ /index.php?$query_string;}# PHP配置location ~ \.php$ {fastcgi_pass php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /www/www.xxx.com/public/$fastcgi_script_name;include fastcgi_params;}
}
在工作目录下的www目录中,新建www.xxx.com目录,并把网校API项目放入其中(当然最好是git clon下来)。例如:(不要忘记修改env中redis的连接地址,redis的host可设置为redis的ip或redis容器名称)
在宿主机/etc/hosts配置 www.xxx.com
127.0.0.1 www.xxx.com
请求www.xxx.com:8000,可查看效果。
第五步:切换php版本
docker pull想要的php版本,例如
docker pull php:7.2-fpm
启动一个php7.2版本的容器,加入到前面创建的网络并绑定www目录:
docker run -itd --name php72 --net lnmp_dnmp -v ~/www/docker/lnmp/www:/www php:7.2-fpm
执行成功后,修改nginx配置中的fastcgi_pass参数,改为php容器名称:端口号9000:
location ~ \.php$ {fastcgi_pass php72:9000;
}
重启nginx容器:
docker restart nginx_test
请求本次修改的nginx配置对应的站点域名,查看php版本切换效果。
此环境能够满足日常开发需求,目录结构和其他配置都可以DIY,大家可以添加更多丰富的功能或配置,也许以后可以成为一套标准的开发环境模型。
结尾:
操作过程中有可能用到的命令:
# 修改nginx配置,记得重启nginx# update读取所有源的软件列表
apt-get update
# 安装vim
apt-install vim
docker:用官方镜像在本地搭建PHP开发环境相关推荐
- 3.1【微信小程序全栈开发课程】在本地搭建后端开发环境
第二章将前端页面的框架基本搭建好了,第三章,我们来做登录功能,登录功能需要在后端获取到用户信息,返回到前端.所以先来搭建后端开发环境 1.后端开发环境介绍 我们的项目用的是前后端分离开发 前端可以理解 ...
- docker 添加端口映射_Docker快速搭建PHP开发环境详细教程
想必作为一个web开发的程序员,近些年对docker技术一定不会陌生,docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux ...
- docker配置python环境_PyCharm使用Docker镜像搭建Python开发环境
在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装.本 ...
- Docker 中国官方镜像加速
通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像.该镜像托管于中国大陆,本地用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker ...
- Docker国内官方镜像地址
Docker国内官方镜像地址 博主: haitianisgood 原博客网址: https://mp.csdn.net/mdeditor/80480359 最近发现'https://registry. ...
- Docker最全教程之使用Docker搭建Java开发环境(十八)
前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...
- Docker最全教程之使用Docker搭建Java开发环境
前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. Java [Jav ...
- 五分钟用Docker快速搭建Go开发环境
挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx. mysql和 php三个容器用 docker-compose编 ...
- 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
最新文章
- 计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )
- 基于三维向量对的乱序堆叠物体的位姿识别
- CSS Guide Lines
- Spring AOP动态代理-切面
- JSP复习笔记——第10章 连接数据库 之 jsp+DAO实现留言管理程序
- 投屏画面尺寸拉伸怎么办_手机投屏转换器设置方法图文教程
- 业务的可变性和不可变性分析_不可变性真的意味着线程安全吗?
- 如何绘制逻辑图 — 2.要素的属性
- web端四方支付 只有安卓可以跳转
- 环世界服务器显示不出来,环世界控制台代码 | 手游网游页游攻略大全
- 【科普】数字货币的基石--区块链
- 【区块链】——区块链学习初探(一)
- 网站管理后台帐号密码暴力破解方法
- unity显示no camera rendering
- Keil_MDK 中绝对地址定位问题
- tomcat html位置,HTML的Tomcat
- 如何设置payjs的微信jsapi支付目录
- 设计模式(十三) 代理模式和Java动态代理
- 2021年第六届数维杯B题 中小城市地铁运营与建设优化设计
- php性能分析工具 xhprof,php 性能分析工具 xhprof
热门文章
- 推荐系统 之 Transformer
- Java调用Canda环境下的Python脚本所遇到环境问题的解决方法
- threejs自定义顶点(vertex)创建几何体
- laravel 悲观锁
- 中财网爬取上市公司第一大股东持股比例
- Fiori程序员用ADT不正经的ABAP数据库建表操作、数据录入
- C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...
- 教师简历系统Python-tkinter
- 7-4 输出菱形图案 (5分)
- textarea赋值的属性