162 lines
3.7 KiB
Markdown
162 lines
3.7 KiB
Markdown
# 基于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();
|
||
```
|