Windowsdocker环境搭建hyperf微服务创建hyperf项目环境dockerrun-d--namehyperfrpc-vd/dataproject/hyperfrpc:/hyperf-skeleton-p9501:9501-it--entrypoint/bin/shhyperf/hyperf:7.4-alpine-v3.11-swoole参数说明:-d表示后台运行--name表示给容器起个名字-v表示挂载机器上的目录-p表示映射到主机的端口,冒号前是本机,后面是docker容器端口-itterminal--entrypoint用这个覆盖dockerfile中定义的entrypoint镜像容器运行后,进入容器,在容器中安装Composer#下载composer.phar文件wgethttps://github.com/composer/composer/releases/download/1.8.6/composer.phar#给composer.phar文件添加可执行权限chmodu+xcomposer.phar#将文件移动到/usr/local/bin/composerrmvcomposer.phar/usr/local/bin/composer将Composer镜像设置为阿里云镜像,加快国内下载速度composerconfig-grepo.packagistcomposerhttps://mirrors.aliyun。com/composerinstallhyperf/hyperf-skeletonproject通过Composercomposercreate-projecthyperf/hyperf-skeleton进入安装好的Hyperf项目目录,linux目录cdhyperf-skeleton测试Hyperf环境是否成功phpbin/hyperf.phpstartopen在powshellAclidockerexec-ithyperfrpc/bin/bash中测试curl127.0.0.1:9501查看输出{"method":"GET","message":"HelloHyperf."}环境成功在hyperf-skeleton目录下创建消费者和提供者删除刚刚创建的hyperf项目rm-rfhyperf-skeletoncreateprovidercomposercreate-projecthyperf/hyperf-创建时skeletonhyperf-skeleton/provider,只选择一个JSON-PRCwithServiceGovernance作为选项,并为所有其他选择n。创建consumercdhyperf-skeletoncopyprovider作为consumercp-rproviderconsumer。在windows上用编辑器编辑provider,随意用编辑器打开项目,目录就是你创建docker容器时挂载的目录。我们在上面挂载了d/dataproject/hyperfrpc。我们可以看到目录中有provider,consumer写provider。我们在app目录下创建一个文件夹,叫做Rpc,在Rpc下创建CalculatorService和CalculatorServiceInterface服务端口CalculatorServiceInterface是一个服务接口[['name'=>'http','type'=>Server::SERVER_HTTP,'host'=>'0.0.0.0','port'=>9501,'sock_type'=>SWOOLE_SOCK_TCP,'callbacks'=>[Event::ON_REQUEST=>[HyperfHttpServerServer::class,'onRequest'],],],['name'=>'jsonrpc-http','type'=>Server::SERVER_HTTP,'host'=>'0.0.0.0','port'=>9502,'sock_type'=>SWOOLE_SOCK_TCP,'callbacks'=>[Event::ON_REQUEST=>[HyperfJsonRpcHttpServer::class,'onRequest'],],],写consumer,我们调用刚刚写在consumer项目controller中的CalculatorService,调用前需要从provider复制服务接口对应的接口我们在消费者的app目录下创建Rpc目录,并创建新复制的CalculatorServiceInterfacecalculatorService->add(1,2);}}创建服务的配置文件我们需要到/config/autoload目录下创建services.php文件配置如下[['name'=>'CalculatorService','service'=>CalculatorServiceInterface::class,'nodes'=>[['host'=>'127.0.0.1','port'=>9502],],],],];这个服务的名字和我们写注解的名字是一致的。service的service对应consumer的CalculatorServiceInterface,因为我们没有使用注册中心,所以直接使用node地址,对应上面代码中的node修改consumer的启用端口,因为consumer复制过来,所以我们需要修改/config/autoloa中的端口在d下的server.php文件中,我们找到服务器,找到名字为http的服务器,把端口改成9503'servers'=>[['name'=>'http','type'=>Server::SERVER_HTTP,'host'=>'0.0.0.0','port'=>9503,'sock_type'=>SWOOLE_SOCK_TCP,'callbacks'=>[Event::ON_REQUEST=>[HyperfHttpServerServer::class,'onRequest'],],],],consumer写好,启动provider,进入终端cdhyperf-skeleton/cdprovider/phpbin/hyperf.phpstart启动consumercdhyperf-skeleton/cdconsumer/phpbin/hyperf.phpstart发起一个请求,打开一个终端curl127.0.0.1:9503我们应该可以看到输出3使用consul我们这里使用consul我们尝试在terminalprovider目录下安装hyperf的服务治理composerhyperf/service-governanceInstallconsul组件composerrequirehyperf/consul发布对应的配置文件phpbin/hyperf.phpvendor:publishhyperf/consul可以看到consul的配置文件已经生成刷机成功。可以查看cogfig/autoload目录下的consul.php文件return['uri'=>'http://127.0.0.1:8500','token'=>'',];默认是下载到本地8500端口,启动consul服务#下载并解压consulcd/opt/mkdirconsulchmod777consulcdconsulwgethttps://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zipunzipconsul_1.3.0_linux_amd64.zipcpconsul/usr/local/bin/#查看是否安装成功consulconsulversion#启动consul服务consulagent-dev-ui-node=consul-dev-client=127.0.0.1#3.另开一个终端,输入查看8500端口curl127.0.0.1:8500#See
