feat: add gRPC server configuration and initial implementation with example proto

This commit is contained in:
2025-12-03 23:25:41 -05:00
parent 1ac5075b37
commit 92623941af
8 changed files with 283 additions and 3 deletions

70
makefile Normal file
View File

@@ -0,0 +1,70 @@
help:
@echo "Available commands:"
@echo " start - Start the development runtime container"
@echo " sh - Open a shell in the development runtime container"
@echo " run - Run the application server in the development runtime container"
@echo " stop - Stop and remove the development runtime container"
@echo " migrate - Run database migrations in the migration container"
@echo " composer-install - Install PHP dependencies in the composer runtime container"
@echo " composer-require - Require a PHP package in the composer runtime container (usage: make composer-require package=vendor/package)"
@echo " composer-require-dev - Require a PHP package as dev in the composer runtime container (usage: make composer-require-dev package=vendor/package)"
@echo " composer-update - Update PHP dependencies in the composer runtime container"
@echo " enable-debug - Enable Xdebug in the development runtime container"
@echo " enable-coverage - Enable PCOV code coverage in the composer runtime container"
@echo " protoc - Generate PHP gRPC code from .proto files"
build-php-grpc:
git clone -b v1.76.0 https://github.com/grpc/grpc
cd grpc
cd grpc && git submodule update --init
grpc_root="$(pwd)"
cd src/php/ext/grpc
phpize
GRPC_LIB_SUBDIR=libs/opt ./configure --enable-grpc="${grpc_root}"
make
composer-install:
docker compose exec composer-runtime sh -c "composer install --no-interaction --prefer-dist --optimize-autoloader --ignore-platform-reqs"
composer-require:
docker compose exec composer-runtime sh -c "composer require $(package) --ignore-platform-reqs"
composer-require-dev:
docker compose exec composer-runtime sh -c "composer require --dev $(package) --ignore-platform-reqs"
composer-update:
docker compose exec composer-runtime sh -c "composer update --no-interaction --prefer-dist --optimize-autoloader --ignore-platform-reqs"
migrate:
docker compose up migration-container
enable-coverage:
${MAKE} start
docker compose exec composer-runtime sh -c "bin/pcov.sh"
start:
docker compose up dev-runtime -d --no-recreate
sh:
${MAKE} start
docker compose exec dev-runtime sh
run:
${MAKE} start
docker compose exec dev-runtime sh -c "rr serve"
enable-debug:
${MAKE} start
docker compose exec dev-runtime sh -c "bin/xdebug.sh"
stop:
docker compose down
protoc:
protoc --plugin=protoc-gen-php-grpc \
--php_out=./generated \
--php-grpc_out=./generated \
protos/example.proto
.PHONY: help enable-coverage start sh run enable-debug stop protoc