{"id":41343207,"url":"https://github.com/rxcod9/laravel-grpc-microservice","last_synced_at":"2026-01-23T06:53:26.212Z","repository":{"id":304466307,"uuid":"1018828996","full_name":"rxcod9/laravel-grpc-microservice","owner":"rxcod9","description":"A minimalistic setup for building Laravel-based gRPC microservices.","archived":false,"fork":false,"pushed_at":"2026-01-08T07:56:17.000Z","size":32,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T06:15:35.590Z","etag":null,"topics":["grpc","laravel","microservice"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rxcod9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-13T06:12:39.000Z","updated_at":"2025-12-11T18:56:44.000Z","dependencies_parsed_at":"2025-07-13T10:23:00.180Z","dependency_job_id":"c7b6278f-0723-404f-85c0-8a20b4c3d113","html_url":"https://github.com/rxcod9/laravel-grpc-microservice","commit_stats":null,"previous_names":["rxcod9/laravel-grpc-microservice"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rxcod9/laravel-grpc-microservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxcod9%2Flaravel-grpc-microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxcod9%2Flaravel-grpc-microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxcod9%2Flaravel-grpc-microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxcod9%2Flaravel-grpc-microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rxcod9","download_url":"https://codeload.github.com/rxcod9/laravel-grpc-microservice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxcod9%2Flaravel-grpc-microservice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28682263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grpc","laravel","microservice"],"created_at":"2026-01-23T06:53:25.530Z","updated_at":"2026-01-23T06:53:26.207Z","avatar_url":"https://github.com/rxcod9.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel gRPC Microservice with RoadRunner\n\nA **minimal, production-ready Dockerized Laravel microservice** using **gRPC** and **RoadRunner**. This project enables you to **publish and receive messages** over gRPC with minimal dependencies—no full Laravel framework required. Logging is directed to Docker stdout for easy container monitoring.\n\n---\n\n## 🚀 Features\n\n- PHP 8.4 CLI (alpine or debian)\n- gRPC via [`spiral/roadrunner-grpc`](https://github.com/spiral/roadrunner-grpc)\n- Logging with `illuminate/log` and `monolog`\n- Minimal Laravel components: `support`, `log`, `config`\n- `.proto`-driven code generation (Dockerized `protoc`)\n- RoadRunner gRPC server \u0026 PHP worker\n- Docker Compose for local development\n\n---\n\n## 📦 Prerequisites\n\n- Docker \u0026 Docker Compose\n- `protoc` and PHP plugins (optional if using Docker for codegen)\n- `grpcurl` (optional, for testing)\n- PHP 8.4 extensions: `grpc`, `protobuf`, `sockets` (included in Dockerfile)\n\n---\n\n## 📁 Project Structure\n\n```\ngrpc-service/\n├── Dockerfile\n├── docker-compose.yml\n├── .rr.yaml\n├── protos/\n│   └── messages.proto\n├── src/\n│   ├── MessageService.php\n│   └── MessageServiceInterface.php\n├── app/\n│   └── Grpc/       (auto-generated from .proto)\n├── bootstrap.php\n├── composer.json\n├── composer.lock\n└── README.md\n```\n\n---\n\n## 🏁 Getting Started\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/rxcod9/laravel-grpc-microservice.git\ncd laravel-grpc-microservice\n```\n\n---\n\n### 2. Generate gRPC PHP Stubs\n\nUse Dockerized `namely/protoc-all`:\n\n```bash\ndocker run --rm \\\n  -v \"$PWD:/workspace\" \\\n  -w /workspace namely/protoc-all \\\n  -f protos/messages.proto \\\n  -l php \\\n  -o app/Grpc\n```\n\nThis generates:\n\n- `MessageServiceInterface.php`\n- `MessageServiceClient.php`\n- Message request/response classes\n\n---\n\n### 3. Build and Start the Service\n\n```bash\ndocker-compose up --build\n```\n\nThis will:\n\n- Install PHP dependencies\n- Compile and install gRPC extensions\n- Start the RoadRunner worker and gRPC server\n\n---\n\n## 🧪 Testing the gRPC Server\n\nExample using `grpcurl`:\n\n```bash\ngrpcurl -plaintext \\\n  -proto protos/messages.proto \\\n  -d '{\"topic\":\"notifications\",\"payload\":\"{\\\"event\\\":\\\"test\\\"}\"}' \\\n  localhost:50051 messages.MessageService/SendMessage\n```\n\nExpected response:\n\n```json\n{\n  \"success\": true,\n  \"message\": \"Message processed\"\n}\n```\n\n---\n\n## 📜 Example `.proto` Definition\n\n```proto\nsyntax = \"proto3\";\n\npackage messages;\n\nservice MessageService {\n  rpc SendMessage (MessageRequest) returns (MessageResponse);\n}\n\nmessage MessageRequest {\n  string topic = 1;\n  string payload = 2;\n}\n\nmessage MessageResponse {\n  bool success = 1;\n  string message = 2;\n}\n```\n\n---\n\n## ⚙️ RoadRunner Configuration (`.rr.yaml`)\n\n```yaml\nrpc:\n  listen: tcp://0.0.0.0:6001\n\ngrpc:\n  listen: tcp://0.0.0.0:50051\n  proto:\n    - protos/messages.proto\n  workers:\n    command: \"php bootstrap.php\"\n    pool:\n      numWorkers: 2\n```\n\n---\n\n## 🛠 Build Notes\n\n- Install `grpc.so` and `protobuf.so` in Docker with `pecl install grpc protobuf`, or copy pre-built `.so` files for faster builds.\n- Download the RoadRunner binary in Dockerfile:\n\n  ```Dockerfile\n  RUN curl -Ls https://github.com/roadrunner-server/roadrunner/releases/download/v2025.1.2/roadrunner-2025.1.2-linux-amd64.tar.gz \\\n    | tar -xz -C /usr/local/bin rr\n  ```\n\n---\n\n## 📦 Example `composer.json`\n\n```json\n{\n  \"require\": {\n    \"spiral/roadrunner-grpc\": \"^2.6\",\n    \"illuminate/log\": \"^12.0\",\n    \"illuminate/support\": \"^12.0\",\n    \"illuminate/config\": \"^12.0\",\n    \"illuminate/container\": \"^12.0\",\n    \"illuminate/console\": \"^12.0\",\n    \"monolog/monolog\": \"^3.0\"\n  },\n  \"autoload\": {\n    \"psr-4\": {\n      \"App\\\\\": \"app/\",\n      \"Messages\\\\\": \"app/Grpc/Messages/\",\n      \"GPBMetadata\\\\\": \"app/Grpc/GPBMetadata/\"\n    }\n  }\n}\n```\n\n---\n\n## 🧼 Clean Shutdown\n\n```bash\ndocker-compose down\n```\n\n---\n\n## 📋 License\n\nMIT\n\n---\n\n## 🙋 Support\n\nFor issues, bugs, or feature requests, open an issue on GitHub or contact the maintainer.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxcod9%2Flaravel-grpc-microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frxcod9%2Flaravel-grpc-microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxcod9%2Flaravel-grpc-microservice/lists"}