docker-webman-jsonrpc/README.md

162 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基于docker的webman-jsonrpc
我们在`php:8.2.20-cli`基础上安装了运行webman必要的一些扩展和开发中常用的扩展以及composer制作成`workerman:8.2.20`镜像因此在开发环境中不需要再额外配置php环境直接写业务代码即可。
## 版本
```txt
./php start.php start
Workerman[start.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.1.15 PHP version:8.2.20 Event-Loop:\Workerman\Events\Event
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root webman http://0.0.0.0:8787 8 [OK]
tcp root monitor none 1 [OK]
tcp root jsonrpc jsonNL://0.0.0.0:8021 8 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
```
## 依赖
只要系统环境中有docker即可生产环境需要docker-compose不需要安装php环境。
## 使用方法
```sh
# composer
./composer require xxxx
# 启动服务
./php start.php start
# 执行其它php命令
./php -m
./php webman build:bin
```
## 服务端口
在.env文件中可以定义服务端口默认情况下docker容器是在host网络下启动的当然实际使用中也可以改成端口映射模式。
## 生产环境使用
创建一个docker-compose.yml文件
```yml
services:
webman:
image: quay.io/wandoubaba517/workerman:8.1.27
container_name: webman
restart: always
volumes:
- ./:/app/service
working_dir: /app/service
stdin_open: true
ports:
- 8787:8787
# 部署生产时启动这一句
command: ['php', 'start.php', 'start']
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8787/"]
interval: 5s
retries: 3
start_period: 5s
timeout: 10s
```
然后直接执行前提要有docker-compose插件
```sh
docker compose up -d
```
## 一些有用的文件
|文件|作用|用法或说明|
|---|---|---|
|composer|调起容器中的composer命令的shell脚本|用法与主机中的compose完全一致./composer $args...|
|php|调起容器中的php命令的shell脚本|用法与主机中的php一致但注意执行./php start.php start命令时不要加-d参数|
|php.ini|映射到容器中的php.ini配置文件|容器中已经安装的扩展都有单独的配置文件,这里不会有体现|
## 已安装PHP扩展
```sh
php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
event
exif
fileinfo
filter
ftp
gd
gmp
hash
iconv
imagick
json
libxml
mbstring
mongodb
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
readline
redis
Reflection
session
SimpleXML
sockets
sodium
SPL
sqlite3
standard
tokenizer
xlswriter
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib
zookeeper
[Zend Modules]
Zend OPcache
```
## 开发说明
### jsonrpc服务端配置
主要在`config/process.php`中配置,`.env`文件可以辅助。
### jsonrpc控制器
在`app/jsonrpc`目录中参照示例创建控制器文件和方法即可。
### jsonrpc客户端配置
主要在`config/jsonrpc.php`中配置,`.env`文件可以辅助。
### 客户端调用服务端的方法
```php
$res1 = \jsonrpc\Client::service('default', 'Demo')->hello('Json');
$res2 = \jsonrpc\Client::service('user', 'User')->login('admin', '123456');
$res3 = \jsonrpc\Client::service('default', 'Demo')->text();
```