diff --git a/README.md b/README.md index d1e7881..4d35942 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,25 @@ -![](https://www.thinkphp.cn/uploads/images/20230630/300c856765af4d8ae758c503185f8739.png) +可供配置的环境变量 +- +|变量名|描述|默认值|必填| +|-|-|-|-| +|`NACOS_ADDR`| nacos注册地址 |`192.168.1.105:8848` |*| +|`SERVICE_PORT`| 指定外部可以向内访问的端口 |`8000`|*| +|`ORIGIN_URL`| 允许跨域的域名 |docker容器内ip|-| -ThinkPHP 8.0 -=============== +内部暴露的端口 +- +|端口|描述| +|-|-| +|`80`| 服务端口 | -## 特性 +容器内的工作目录 +- +- /var/www/html -* 基于PHP`8.0+`重构 -* 升级`PSR`依赖 -* 依赖`think-orm`3.0版本 -* `6.0`/`6.1`无缝升级 +如何保存数据 +- +将文件夹 `/var/www/html/public` 设置为映射到挂载点 - -> ThinkPHP8.0的运行环境要求PHP8.0.0+ - -现在开始,你可以使用官方提供的[ThinkChat](https://chat.topthink.com/),让你在学习ThinkPHP的旅途中享受私人AI助理服务! - -![](https://www.topthink.com/uploads/assistant/20230630/4d1a3f0ad2958b49bb8189b7ef824cb0.png) - -## 文档 - -[完全开发手册](https://doc.thinkphp.cn) - -## 服务 - -ThinkPHP生态服务由[顶想云](https://www.topthink.com)(TOPThink Cloud)提供,为生态提供专业的开发者服务和价值之选。 - -## 赞助 -全新的[赞助计划](https://www.thinkphp.cn/sponsor)可以让你通过我们的网站、手册、欢迎页及GIT仓库获得巨大曝光,同时提升企业的品牌声誉,也更好保障ThinkPHP的可持续发展。 - -[![](https://www.thinkphp.cn/uploads/images/20230630/48396092a0515886a3da6bd268131c8f.png)](http://github.crmeb.net/u/TPSY) - -[![](https://www.thinkphp.cn/uploads/images/20230630/a12bd248beee0e7491dd0f79dc4dd5e9.png)](https://www.thinkphp.cn/sponsor) - -[![](https://www.thinkphp.cn/uploads/images/20230630/e7f48d909d41dd5ebaf4a5aa982d0455.png)](https://www.thinkphp.cn/sponsor) - -## 安装 - -~~~ -composer create-project topthink/think tp -~~~ - -启动服务 - -~~~ -cd tp -php think run -~~~ - -然后就可以在浏览器中访问 - -~~~ -http://localhost:8000 -~~~ - -如果需要更新框架使用 -~~~ -composer update topthink/framework -~~~ - -## 命名规范 - -`ThinkPHP`遵循PSR-2命名规范和PSR-4自动加载规范。 - -## 参与开发 - -直接提交PR或者Issue即可 - -## 版权信息 - -ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 - -本项目包含的第三方源码和二进制文件之版权信息另行标注。 - -版权所有Copyright © 2006-2023 by ThinkPHP (http://thinkphp.cn) All rights reserved。 - -ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 - -更多细节参阅 [LICENSE.txt](LICENSE.txt) +注意事项 +- +将外部文件夹映射到容器内的 `/var/www/html/public` 文件夹时,需要给对应的外部文件夹添加权限,否则上传的文件会无法保存。 diff --git a/app/controller/Index.php b/app/controller/Index.php index c5ff3db..067c844 100644 --- a/app/controller/Index.php +++ b/app/controller/Index.php @@ -25,7 +25,12 @@ class Index $env = new Env(); // thinkphp里面无法获取SERVER_ADDR变量,会被nacos拦截替换 - $serverIP = $env->get('SERVICE_ADDR', '192.168.1.161:8000'); + // 服务暴露的端口 + $servicePort = $env->get('SERVICE_PORT', 8000); + // 服务可以访问到的IP + $serverIP = $env->get('SERVER_ADDR'); + // 允许跨域的域名 + $originUrl = $env->get('ORIGIN_URL', $serverIP); // 组装保存路径 $savename = \think\facade\Filesystem::disk('upload')->putFile('uploads', $file); @@ -36,7 +41,7 @@ class Index 'msg' => null, 'data' => [ "name" => $trueName, - "url" => 'http://' . $serverIP . '/' . $savename, + "url" => '//' . $originUrl . '/' . $savename, // "url" => 'http://192.168.1.105:8080/file/' . $savename, ], // 'env' => $env->get(), diff --git a/start.php b/start.php index 404da2d..3370429 100644 --- a/start.php +++ b/start.php @@ -10,16 +10,19 @@ use think\Env; // 读取环境变量 $env = new Env(); -// wokerman里面能准确获取SERVER_ADDR变量,没有HTTP_HOST变量 -$serverAddr = $env->get('SERVICE_ADDR', '192.168.1.161:8000'); +// nacos的注册地址 $nacosAddr = $env->get('NACOS_ADDR', '192.168.1.105:8848'); +// 服务可以访问到的IP +$serviceAddr = $env->get('SERVER_ADDR'); +// 服务暴露的端口 +$servicePort = $env->get('SERVICE_PORT', 8000); $task = new Worker(); // 定时触发邮件发送任务 // 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题 $task->count = 1; -$task->onWorkerStart = function(Worker $task) use ($serverAddr, $nacosAddr) +$task->onWorkerStart = function(Worker $task) use ($serviceAddr, $servicePort, $nacosAddr) { $client = new Client([ // nacos地址 @@ -27,21 +30,20 @@ $task->onWorkerStart = function(Worker $task) use ($serverAddr, $nacosAddr) "timeout" => 5 ]); // 心跳检测,每8秒执行一次 - Timer::add(8, function() use ($client, $serverAddr) + Timer::add(8, function() use ($client, $serviceAddr, $servicePort) { - list ($serverIP, $serverPort) = explode(':', $serverAddr); - $response = $client->request("put", "/nacos/v1/ns/instance/beat", [ + $client->request("put", "/nacos/v1/ns/instance/beat", [ "form_params" => [ "serviceName" => "zeroerroa-file", - "ip" => $serverIP, - "port" => $serverPort, + "ip" => $serviceAddr, + "port" => $servicePort, "namespaceId" => "0a1c32f2-dea1-4ec1-b546-cb4635cd7db2", "groupName" => "DEFAULT_GROUP", "beat" => '{ "cluster": "DEFAULT", - "ip": "' . $serverIP . '", + "ip": "' . $serviceAddr . '", "metadata": {}, - "port": "' . $serverPort . '", + "port": "' . $servicePort . '", "scheduled": true, "serviceName": "zeroerroa-file", "weight": 1