Docker部署完整的PHP-RPC-Golang环境

本文详细介绍了如何基于Docker部署一个PHP-Laravel应用,该应用通过gRPC与Golang服务进行通信。首先,描述了架构设计,包括PHP作为前端,Golang提供用户信息和登录统计服务。接着,逐步讲解了本地环境准备、Dockerfile编写、protobuf文件定义、gRPC代码生成、Golang服务端开发、PHP客户端集成以及Nginx配置等关键步骤。最后,通过POST请求验证了整个环境的正确性。
摘要由CSDN通过智能技术生成

完全基于docker部署一个php通过rpc访问golang的环境。

基本架构

我们用PHP的Laravel框架来实现一个用户登录的Restful Api,地址为:

POST /user/login

返回信息为用户Id以及JWT token。

Golang用来实现两个服务,一个是用户信息服务,一个是登录的统计服务,PHP通过gRPC与Golang通讯。

最终部署完成后,共有4个docker的container,分别是:

  1. Nginx服务
  2. PHP-FPM服务
  3. 用户信息服务
  4. 登录统计服务

详细步骤

  1. 本地环境准备
    我的home目录是/home/anakin
apt install protobuf
apt install composer
mkdir -p www/demo
mkdir www/conf.d
mkdir www/phpini

进入www目录,下载protobuf的代码,我们要用到其中的一个工具:

git clone https://github.com/grpc/grpc.git

进入www/demo目录,创建Laravel项目:

composer create-project laravel/laravel demo
composer require grpc/grpc

稍后我们再来写业务代码。

进入www/conf.d,编写nginx-host.conf,用来解析PHP的服务,内容如下:

server {
        listen  80;
                server_name 192.168.32.131;
                set $root_path '/var/www/html/public';
                root $root_path;

                index index.php index.html index.htm;

                try_files $uri $uri/ @rewrite;

                location @rewrite {
                        rewrite ^/(.*)$ /index.php?_url=/$1;
                }

                location ~ \.php {
                        fastcgi_pass 192.168.32.131:9000;
                        # fastcgi_pass unix:///run/php/php7.2-fpm.sock;
                        fastcgi_index /index.php;
                        fastcgi_split_path_info ^(.+\.php)(/.+)$;
                        fastcgi_param PATH_INFO       $fastcgi_path_info;
                        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        include                       fastcgi_params;
                }

                location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值