jafaripur/php-microservice-application-yii2

php-microservice 框架的 console 应用程序启动器,用于微服务节点

dev-master 2022-08-18 11:09 UTC

This package is auto-updated.

Last update: 2024-09-18 15:17:01 UTC


README

prod-build test

Yii2 控制台应用程序,用于编写我们负责处理客户端调用的方法。

该应用程序是微服务应用程序的模板,并实现了 jafaripur/php-microservice 的四个方法。为使用这些微服务方法创建的另一个库是 jafaripur/php-microservice-user-service

用于消费和接收数据

php yii_dev user-service/listen

通过使用此客户端库(jafaripur/php-microservice-user-service)发送测试消息

php yii_dev user-service/send-test

创建项目

composer create-project "jafaripur/php-microservice-application-yii2 dev-master" micro3

配置

存在三个 env 文件


.env        => For production
.env_dev    => For development
.env_test   => For test with codeception

三个入口点


yii        => For production
yii_dev    => For development
yii_test   => For test with codeception

生产构建

此应用程序可以使用 Dockerfile docker/Dockerfile.prod 中的 roadrunner 服务插件在生产环境中运行。使用 docker 进行生产构建

export DOCKER_BUILDKIT=1 && docker build -f "./docker/Dockerfile.prod" -t "micro3-prod:latest" .

构建后,我们可以创建容器或 docker swarm 服务。生产 Docker 镜像运行 RoadRunner。在此示例中,我们使用此配置为 RoadRunner,配置存在于 .rr.yaml 文件中。

version: "2.7"

service:
  topics:
    command: "php yii user-service/listen first-consumer"
    process_num: 10
    exec_timeout: 0
    remain_after_exit: true
    restart_sec: 5

  emits:
    command: "php yii user-service/listen second-consumer"
    process_num: 2
    exec_timeout: 0
    remain_after_exit: true
    restart_sec: 5

logs:
  mode: production
  encoding: console

使用此 RoadRunner 服务插件,我们可以运行多个实例的多个消费者。

从构建的镜像创建 docker 容器

docker run -d --init \
    --name micro3-container \
    --restart unless-stopped \
    micro3-prod:latest

以及 swarm 服务

docker service create --name "micro3-service" \
    --replicas 2 \
    --update-delay 10s \
    micro3-prod:latest

测试

# Run test
docker-compose up --build micro

# Stop and remove created containers
docker-compose down