其他语言调试和部署
收藏我的收藏
当前 AI 分身开发者工具官方支持 Go / Java 的开发,其他语言(如 PHP 等)可以参考本文档进行项目配置,进行调试和部署。
项目开发
项目规范
AI 分身项目根目录中需要满足以下规范:
- 1.含有 Dockerfile 文件
- a.服务在抖音云部署实际为一个 Docke r镜像,Dockerfile 需要为服务运行提供基础环境,如:php 环境,fpm,nginx等。
- 2.含有 run.sh 文件
- a.服务启动的入口文件,docker容器的启动路径为执行容器内部 /opt/application/run.sh。
- 3.端口监听为 8000
- a.服务启动需要监听 8000 端口,暂不支持修改,否则会导致部署失败。
- 4.实现探活接口
- a.容器在启动后, IDE 会对 “/ping” 接口进行探活,需要保证实现该接口返回 HTTP 状态码为 200。
- b.容器在启动后,抖音云会对 “/v1/ping” 接口进行探活,需要保证该接口返回 HTTP 状态码为 200 或 404。
项目功能
功能实现:AI 分身需要实现两个接口 。
- •开场白(必须实现):
- ◦path:/avatar/serv/onboarding
- ◦HTTP method:POST
- ◦接口协议:分身服务—开场白
- •流式对话(必须实现):
- ◦path:/avatar/serv/chatstream
- ◦HTTP method:POST
- ◦接口协议:分身服务—流式对话
PHP 项目可参考
当前参考实现为 php + nginx + fpm。
- 1.Dockerfile文件
# 基础镜像中包含7.4的php版本,fpm,nginx,如有其他诉求可以自行修改基础镜像 FROM public-cn-beijing.cr.volces.com/public/base:php-7.4-fpm-nginx WORKDIR /opt/application COPY . /opt/application # 容器中fpm的9000端口被占用,因此需要替换端口,需要修改nginx配置为8000端口,fpm配置替换, # 同时为run.sh给可执行权限 RUN cp /opt/application/conf/nginx.conf /etc/nginx/conf.d/default.conf \ && cp /opt/application/conf/www.conf /usr/local/etc/php-fpm.d/www.conf \ && cp /opt/application/conf/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf\ && mkdir -p /run/nginx \ && chmod -R 777 /opt/application/runtime \ && chmod -R 777 /opt/application/run.sh EXPOSE 8000 # CMD /opt/application/run.sh
- 2.run.sh
#!/bin/sh # 后台启动 php-fpm -D if [$? -ne 0]; then echo "fpm init failed" fi # 关闭后台启动,hold住进程 nginx -g 'daemon off;'
- 3.监听端口 8000,fpm 端口由于 9000 端口被占用,所以需要修改,更改为 9090 端口,
修改 conf/nginx.conf 文件,修改为 8000 端口,因为流式传输 所以将 fastcgi 缓冲区关闭,fastcgi_buffering off,如有其他实现,可自行修改。
server { listen 8000; server_name localhost; root /opt/application/public; index index.html index.htm index.php; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location / { try_files $uri @rewrite; } location @rewrite { set $static 0; if ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) { set $static 1; } if ($static = 0) { rewrite ^/(.*)$ /index.php?s=/$1; } } location ~ \.php$ { fastcgi_pass 127.0.0.1:9090; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffering off; } }
修改 fpm 端口为 9000。
修改 conf/zz-docker.conf。
[global] daemonize = no [www] listen = 9090
- 4.探活接口实现
可以自行实现或者缺省返回 HTTP 404 状态码。
- 5.功能实现:参考上述项目规范中的文档。
项目调试
非 Golang 和 Java 语言的项目,预期推荐的开发方式为:
- 1.代码开发和相应的断点调试能力需要进行配置后由其他 IDE 提供,比如 PhpStorm,Pycharm 等。
- 2.项目的对话调试能力和部署能力仍需要通过Vscode插件进行提供。
PHP项目开发调试
- 1.前往[抖音云控制台] -> [服务列表] -> [本地调试] 打开本地调试开关;
- 2.打开Vsocde,并下载 「抖音 AI 分身开发者工具」插件,选中对应的 APP,并打开需要开发调试的工程项目
- a.需要注意的是,工程项目中需要有 Dockerfile 文件和 run.sh 文件;
- 3.点击启动调试,在 VSCode 中启动抖音云代理容器,此时代理容器已打开,等待本地服务启动中
- a.等待本地服务启动中:本质就是对 localhost:8000/ping 进行探活,因此请确保本地服务成功启动,并实现该接口。
- 4.打开 PhpStormIDE,并打开和 VSCode 中相同的工程项目
- 5.在
PhpStorm
中Run/Debug Configuraitons
中创建抖音云代理配置。- 6.填入对应的名称,点击
Apply
保存,点击OK
完成创建。- 7.选择刚刚创建的抖音云代理配置,点击Run按钮启动抖音云代理。
打开
Docker Desktop
,可以看到如下两个代理容器已经被正确启动,并且状态为 Running。配置并启动后端服务
当抖音云代理配置启动完成后,会在当前项目路径下生成两个服务 docker 相关的配置文件,如下图所示:
- •
dycloud.Dockerfile
- •
dycloud-docker-compose.yml
注意:
- •如果代理启动完成后,在Project窗口中未显示生成的两个文件,可以在 Project 窗口右键 -> ReLoad From Disk 点击刷新。
- •如果本地已经存在同名文件,则抖音云代理不会生成该文件。如果想要重新生成该文件,需要手动删除项目下的同名文件。
说明:
- •通过生成的 dycloud.Dockerfile 以及 dycloud-docker-compose.yml 文件,将后端服务通过 docker 在本地启动,即可实现本地访问云端数据库的调试,具体可以参考如下流程。
在 PhpStorm 中完成项目配置
在
PhpStorm
Run/Debug Configurations
新创建一个Docker Compose
配置:此处在
Compose files
处选择刚刚创建的dycloud-docker-compose.yml
文件,点击OK
完成创建。点击
Run
按钮启动服务容器:配置 Php Remote Debug
在
PhpStorm
打开Run/Debug Configurations
配置页,新建一个PHP Remote Debug
选项:- ••填写
Name
,此处值为docker-remote-debug
。- ••点击右侧按钮创建一个
Server
,配置如下:- •◦
HOST
填写localhost
。- •◦
Port
填写端口8000
。- •◦
Debugger
选择XDebug
。- •◦
Project files
选项处Absolute path on the server
填写/opt/application
。- ••在
IDE KEY
配置项,填写PHPSTORM
,该配置对应于dycloud.Dockerfile
中的xdebug.idekey
。配置完成,点击右上角按钮开启
Debug
按钮监听。通过 http://localhost:8000/avatar/serv/chatstream?XDEBUG_SESSION_START=PHPSTORM 来访问服务,如果设置断点,则会在断点处停留。
VSCode 对话框调试
在上述流程完成后,Vscode 在监听到该 localhost:8000/ping 后,会自动打开聊天框,此时即可模拟用户与后端服务进行聊天调试。
项目部署
点击 VSCode 插件中的 部署按钮,即可将当前项目部署到抖音云上。
常见问题记录
如出现以下调试启动失败的情况,请前往[抖音云控制台] -> [服务列表] -> [本地调试] 打开本地调试开关。