介绍

本文将介绍抖音云插件PhpStorm版本的使用。

使用限制

    1.在本机安装Docker环境,推荐Windows/Mac/Linux 用户安装Docker Desktop软件(下载链接),并打开软件保证Docker服务正常启动。
    2.下载并安装Jetbrains PhpStorm软件,版本要求2023.01版本以上。
    3.本文档基于插件版本为1.5.4,参阅本文档前请将插件更新至1.5.4版本。

插件安装

    1.打开PhpStorm的设置界面。
    Mac OS用户选择 PhpStorm -> Preferences。
    Windows用户选择File -> Settings。
    2.在设置界面中选择 Plugins ,在搜索框中输入 Douyin Cloud ToolKit,点击安装插件

登录

首次打开抖音云插件时需要先完成登录。点击登录按钮,在弹出框中输入登录抖音云控制台的账号密码,完成登录。
在弹出框中选择登录方式,并完成登录,账号需要先在抖音云控制台完成注册开通。
登录完成后,插件配置界面登录状态会更新为 已登录。

项目配置

项目首次使用抖音云插件时,需要选择配置对应的小程序和服务,点击配置按钮,在弹出框中选择对应的小程序和服务,完成配置。
选择完成后,插件配置界面App和Service会更新为对应的选择。

刷新配置

如果在抖音云控制台对小程序和服务进行对应的修改后,需要刷新配置。点击刷新配置按钮刷新配置,插件会校验当前配置的有效性,如果没有效需要重新进行配置。

本地调试

通过抖音云插件可以将项目部署在本地 Docker 容器中,并且通过抖音云代理可以访问抖音云 dev 环境的数据库资源(比如 MySQL、 Redis、 Mongo 等),而无需开启数据库资源的公网访问,保证数据安全。
下面将介绍如何通过抖音云插件进行本地开发和调试,本文档中将以抖音云官方php语言的deom为例,项目地址:GitHub - bytedance/douyincloud-thinkphp-nginx-demo

1. 启动抖音云代理

    1.PhpStormRun/Debug Configuraitons中创建抖音云代理配置。
    2.填入对应的名称,点击Apply保存,点击OK完成创建。
    3.选择刚刚创建的抖音云代理配置,点击Run按钮启动抖音云代理。
启动完成,抖音云代理会在本地启动两个代理容器,用于云上云下流量转发。
    websocket 代理容器
    数据库代理容器
打开Docker Desktop,可以看到如下两个代理容器已经被正确启动,并且状态为 Running。

2.配置并启动后端服务

当抖音云代理配置启动完成后,会在当前项目路径下生成两个服务 docker 相关的配置文件,如下图所示:
    dycloud.Dockerfile
    dycloud-docker-compose.yml
注意
    如果代理启动完成后,在Project窗口中未显示生成的两个文件,可以在Project窗口右键 -> ReLoad From Disk点击刷新。
    如果本地已经存在同名文件,则抖音云代理不会生成该文件。如果想要重新生成该文件,需要手动删除项目下的同名文件。
说明
    通过生成的dycloud.Dockerfile以及dycloud-docker-compose.yml文件,将后端服务通过docker在本地启动,即可实现本地访问云端数据库的调试,具体可以参考如下流程。
配置文件的内容如下:
dycloud.Dockerfile
# php项目启动基础镜像 FROM public-cn-beijing.cr.volces.com/public/base:php-7.4-fpm-nginx #安装 xdebug 扩展并开启;设置xdebug配置 RUN pecl install xdebug-3.1.6 && docker-php-ext-enable xdebug \ # 指定开启xdebug远程调试功能 && echo "xdebug.mode = debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ # 指定IDE所在电脑的ip && echo "xdebug.client_host = 10.90.34.97" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ # 指定IDE debug端口 && echo "xdebug.client_port = 9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ # xdebug通信的协议,这里固定填dbgp && echo "xdebug.remote_handler = dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ # 通信的key标识 && echo "xdebug.idekey = PHPSTORM" # 环境变量,从云端dev环境拉取,需要手动填充密码等相关信息 ENV REDIS_USERNAME=default ENV CLOUD_ENV=DEV ENV MYSQL_PASSWORD=请自行输入对应密码信息 ENV MONGO_ADDRESS=dycloud-local-proxy:3717 ENV MONGO_USERNAME=root ENV MONGO_PASSWORD=请自行输入对应密码信息 ENV REDIS_PASSWORD=请自行输入对应密码信息 ENV REDIS_ADDRESS=dycloud-local-proxy:6379 ENV SERVICE_ID=1jdoyz791cvnd ENV MYSQL_USERNAME=test ENV MYSQL_ADDRESS=dycloud-local-proxy:3306 # 将构建上下文内容拷贝至 /opt/application/目录下 COPY . /opt/application 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 CMD /opt/application/run.sh
说明
    第3行 - 第14行对应于PHP调试时XDebug的相关配置。
    第15行-第26行为开发者所配置的service在抖音云dev环境的环境变量,其中MYSQL_ADDRESSMONGO_ADDRESSREDIS_ADDRESS对应的地址修改为了dycloud-local-proxy
    这是为了进行流量转发,开发者在项目中需要通过环境变量的方式来获取访问数据库的地址,进而在本地调试时实现访问云端数据库。
    由于安全原因,需要开发者自行填入访问数据库的对应的密码信息,参见上述示例的第18行、第21行以及第22行。
dycloud-docker-compose.yml
services: java-danmu-demo: build: context: . dockerfile: dycloud.Dockerfile container_name: java-danmu-demo extra_hosts: - config-center.dycloud.run:17.100.0.3 - developer.toutiao.com:17.100.0.3 - open.douyin.com:17.100.0.3 - webcast.bytedance.com:17.100.0.3 - ws-push.dycloud-api.service:17.100.0.4 networks: dycloud0: ipv4_address: 17.100.0.2 ports: - mode: ingress target: 8000 published: "8000" protocol: tcp volumes: - type: bind source: /Users/bytedance/Code/bytedance/douyincloud/douyincloud-thinkphp-nginx-demo target: /opt/application bind: create_host_path: true networks: dycloud0: name: dycloud0 external: true
说明
    上述配置文件主要涉及本地服务容器启动时的一些配置信息,包括容器网络信息、hosts信息等。

2.1 在PhpStorm中完成项目配置

PhpStorm Run/Debug Configurations 新创建一个Docker Compose配置:
此处在Compose files处选择刚刚创建的dycloud-docker-compose.yml文件,点击OK完成创建。
点击Run按钮启动服务容器:

2.1.3 配置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/api/hello?target=redis&XDEBUG_SESSION_START=PHPSTORM
来访问服务,如果设置断点,则会在断点处停留。

本地接口调试

抖音云插件支持本地接口调试,您需要先参照【本地容器启动】通过抖音云插件启动服务;点击接口调试按钮打开接口调试界面:
在接口调试界面中,配置要请求的接口,点击调试按钮完成调试请求。
    在1处选择要请求的http method,抖音云插件支持get/post。
    在2处输出要请求的http url,只需要输入请求方法的path,比如/test
    点击4勾选模拟选择用户态登录,需要提前在抖音云控制台绑定抖音账号,如果没有绑定,点击5跳转完成绑定。
    在6处可以自定义配置请求的Header与请求的Query。
    在7处可以填写请求的Body参数,只有POST请求才会允许填写。
    点击3处调试按钮发送请求,将会在8处显示请求的具体结果,样例如下:
注:您也可以在启动服务后通过Postman等http请求调试工具来测试您的接口。

一键部署

抖音云插件支持将项目工程一键部署到抖音云端的dev环境,在工具栏中点击一键部署按钮,并在弹出框中完成镜像版本和发布备注的填写,点击OK开始一键部署。
注:抖音云插件会默认使用项目下的Dockerfile文件作为镜像构建的Dockerfile文件。
填写对应的镜像标签和发布备注,点击OK按钮开始部署。
点击OK后,会在下方Douyin Cloud Console中实时显示部署的日志信息,便于查看部署情况。

常见问题

抖音云代理启动失败,如何排查?

常见的启动失败的原因如下,开发者可自行根据错误信息自行解决,下面列举一些常见的失败信息:
关键错误信息
解决办法
初始化docker失败
检查本机Docker Desktop软件是否正常启动
当前小程序下未启动本地调试功能
本地调试功能未打开,请前往抖音云控制台 -> 服务列表页,点击【本地调试】按钮确认功能是否打开。
如果仍然无法解决,可以通过提交工单解决。

代理启动后,找不到dycloud-local-proxy容器

停止抖音云代理,并重新运行抖音云代理配置,观察dycloud-local-proxy容器是否正确启动。

本地启动后访问数据库报错

按照如下步骤排查:
    1.首先检查抖音云代理是否正确启动,代理容器是否正确启动且状态为Running;如果不满足,需要重新启动抖音云代理。
    2.检查项目访问数据库的方式,本地调试模式下访问数据库的地址会通过环境变量的方式修改为抖音云数据库代理容器dycloud-local-proxy