环境准备
1、在VMware虚拟机中,安装一台Linux,开启共享目录,然后安装docker,建议采用宝塔面板。
2、制作一个docker镜像,php8.2 + swoole
FROM php:8.2-cli
RUN apt-get update && apt-get install -y \
libcurl4-openssl-dev \
libssl-dev \
libzip-dev \
libbrotli-dev \
unzip && \
docker-php-ext-install zip
RUN pecl install swoole && \
docker-php-ext-enable swoole
WORKDIR /var/www
构建镜像
docker build -t php8.2-swoole:v1.0.0 .
3、在本地创建目录 C:\Users\junwind\Desktop\wwwroot\learnProject\seckill\v1,共享到虚拟机中的 /www/wwwroot,共享文件夹配置如下
vmhgfs-fuse /www/wwwroot fuse allow_other,defaults 0 0
4、执行composer init ,创建一个基本的架子。
composer init
Package name (<vendor>/<name>) [root/v1]: junwind/seckill // 输入项目名称
...
Author [n to skip]: junwind // 输入作者
// 后面的一路回车跳过即可,最终生成的结果如下图
我们将 src 改为 app,将 composer.json 中的 autoload 改为
"autoload": {
"psr-4": {
"App\\": "app/"
}
},
然后执行 composer dump-autoload
重置一下 vendor的自动加载文件。
运行docker容器
// 运行一个容器
docker run -it \
--name seckill \
-p 8001:80 \
-v /www/wwwroot/learnProject/seckill/v1:/var/www/v1 \
php8.2-swoole:v1.0.0 sh
// 执行后,会直接进入到容器内部,我们可以查看一下v1
# ls v1
app composer.json vendor
// 退出容器,退出后,容器会停止
exit
// 容器常驻运行
docker start seckill
// 进入到运行的容器内部
docker exec -it seckill bash
此时,我们windows本地的代码会同步到虚拟机中,虚拟机中会同步到docker中,最终依托于docker环境,运行我们的代码。
将swoole-ide-helper库添加到phpstorm中
这个库可以对swoole的代码有提示
1、在GitHub中搜索 swoole ide helper,https://github.com/wudi/swoole-ide-helper.git
2、克隆到本地桌面即可。
3、配置phpstorm外部库
手写 http server
docker exec -it seckill bash
cd /var/www/v1
php index.php
在本地windows主机访问 http://192.168.0.101:8001