栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

基于Docker Desktop的PHP学习环境搭建(文科生笔记)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Docker Desktop的PHP学习环境搭建(文科生笔记)

目录

引言

一、学习设备、系统

1.设备

2.系统

3.工具

        (1)Docker Desktop for Windows(官网下载)

        (2)VS Code(官网下载)

        (3)Navicat Premium

二、PHP环境方案(nginx+php)

1.参考文档

2.拉取镜像

        (1)在terminal中拉取镜像

        (2)在Docker Desktop中查看镜像

  3.nginx容器配置

        (1)第一次创建nginx的容器

         (2)在ubuntu中创建nginx的配置文件和日志

        (3)把容器里的配置文件复制到ubuntu里,结束第一次创建的容器的使命 

         (4)用配置文件重建nginx容器(这一步用了link,要先把下面的php容器开起来,不然会报错)

4.PHP容器配置

        (1)第一次创建PHP容器

        (2)用terminal或者VS Code的资源管理器创建php文件夹,及其下面的conf和log文件夹

        (3)用配置文件重建容器

        (4)重建容器后记得回上文,把nginx重建起来。 

三、PHP的第一个应用(连接数据库)

1.环境测试

2.下载MYSQLi的拓展

 3.建立一个连接,测试连接结果


引言

        Win11应用商城自带的WSL2为Windows用户的Linux学习提供了便利,配合Docker官方提供的Docker Desktop for Windows用于镜像和容器的可视化管理、VS Code的Docker、WSL插件作为开发的支持,可以在Windows电脑上轻松搭建出需要的学习环境。(选择:Navicat作为数据库的管理软件)

一、学习设备、系统

1.设备

        PC

2.系统

        Win11 + WSL2(在微软应用商店下载的Ubuntu20.04.4 LTS)

3.工具

        (1)Docker Desktop for Windows(官网下载)

        Docker开启了如下设置,来支持WSL2

        Setting-General-Use the WSL 2 based engine (Windows Home can only run the WSL 2 backend)

        (2)VS Code(官网下载)

         VS Code中下载Docker插件和WSL插件。

        (3)Navicat Premium

        支持正版,或者度娘?

二、PHP环境方案(nginx+php)

1.参考文档

用的这篇

基于Docker搭建PHP开发环境 - X-Wolf - 博客园 (cnblogs.com)

2.拉取镜像

        (1)在terminal中拉取镜像

        这一部分需要在terminal中操作,通过以下命令拉取最新的nginx、mysql镜像,拉取php的fpm镜像。

docker pull nginx
docker pull php:fpm

        (2)在Docker Desktop中查看镜像

  3.nginx容器配置

        (1)第一次创建nginx的容器

        nginx容器的创建相对容易,可以在Docker Desktop中直接run。这一次创建的作用是为了让它生成配置文件,而后者我们要放在ubuntu中,用映射的方式对应到容器里面,所以等下会删掉这次创建的容器,再创建一次。

        也可以在terminal中输入

docker run --name nginx -p 80:80 nginx

         run后,在浏览器访问localhost即可进入初始页面,docker desktop中也能看到。

         (2)在ubuntu中创建nginx的配置文件和日志

        在terminal中

mkdir -p docker/nginx && cd docker/nginx
mkdir conf log

         或者在VS Code左侧的资源管理器中创建也是相同的

        (3)把容器里的配置文件复制到ubuntu里,结束第一次创建的容器的使命 

         然后把容器内的配置文件复制到ubuntu里。以本文为例,本文是在用户文件夹里操作的,上面已经访问到了/docker/nginx文件夹中,下面的代码为

docker cp nginx:/etc/nginx/conf.d/default.conf conf/default.conf

        结果如下: 

         这时,发动技能《过河拆桥》。在terminal中关闭容器并删除,或者在Docker Desktop中删除容器。

        terminal操作如下:

docker stop nginx && docker rm nginx

        界面操作如下: 

过河拆桥

         (4)用配置文件重建nginx容器(这一步用了link,要先把下面的php容器开起来,不然会报错)
docker run --name nginx --link php-fpm:php -p 80:80 
 -v /home/yerdon/docker/nginx/conf:/etc/nginx/conf.d -v 
/home/yerdon/docker/www:/usr/share/nginx/html -v 
/home/yerdon/docker/nginx/log:/var/log/nginx nginx

         到此,nginx容器配置完成。

4.PHP容器配置

        思路与nginx容器的创建一致,需要先直接创建一次,从中提取配置文件到ubuntu,然后删除容器,映射配置文件重新创建。

        (1)第一次创建PHP容器
docker run --name php-fpm -p 9000:9000 -d php:fpm

         或者在docker desktop中run也可。

        (2)用terminal或者VS Code的资源管理器创建php文件夹,及其下面的conf和log文件夹

        cd进这个文件夹,从容器里拷两份配置文件过来。

cd /home/yerdon/docker/php
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf conf/www.conf
docker cp php-fpm:/usr/local/etc/php/php.ini-production conf/php.ini

        然后删掉容器。 

docker stop php-fpm && docker rm php-fpm

        (3)用配置文件重建容器
docker run --name php-fpm -p 9000:9000 -v /home/yerdon/docker/www:/var/www/html -v /home/yerdon/docker/php/conf/php.ini:/usr/local/etc/php/php.ini php:fpm

        (4)重建容器后记得回上文,把nginx重建起来。 

三、PHP的第一个应用(连接数据库)

1.环境测试

        在docker/www/下创建一个index.php

        使用上面的代码测试环境是否已经搭建成功。

2.下载MYSQLi的拓展

        在Docker Desktop中打开php的命令行,用以下命令安装和启用MYSQLi的拓展。

docker-php-ext-install mysqli
docker-php-ext-enable mysqli

 3.建立一个连接,测试连接结果

        建议不要用docker拉的Mysql进行测试,Docker的默认时区是0时,会导致PHP连不上。

         在navicat中可以连接成功。

        在index.php中写入

connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
echo "连接成功";
?>

         至此,整个环境就搭建完成了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号