docker:用官方镜像在本地搭建PHP开发环境
2022/3/1 17:22:50
本文主要是介绍docker:用官方镜像在本地搭建PHP开发环境,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
远离搭建环境的烦恼,使用docker官方镜像也能简单搭建本地开发环境(可配置多站点,可灵活切换多个php版本)。本文全是干货,无脑按步骤操作即可。
第一步:在本地创建一个工作目录,目录结构如下:
lnmp
nginx
conf
vhost
default.conf
logs
redis
data
log
redis.conf # protected-mode no 设置成no,logfile 改为"/dev/log",# bind 127.0.0.1注释掉,requirepass 'xxxx'设置密码
www 项目代码存放目录
docker-compose.yml
docker-compose.yml的内容:
services: nginx: image: nginx restart: always ports: - "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/nginx networks: - dnmp container_name: nginx_test php: image: php:7.3-fpm restart: always volumes: - ~/www/docker/lnmp/www:/www # - ~/www/docker/lnmp/php/conf:/usr/local/etc/php networks: - dnmp container_name: php_test redis: image: redis:6.2 restart: always ports: - "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容器指定ip container_name: redis_test networks: dnmp: #可手动创建网络 docker network create --subnet=172.20.3.0/24 lnmp_dnmp ipam: 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容器名称)
这篇关于docker:用官方镜像在本地搭建PHP开发环境的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享