介绍

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

使用限制

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

安装插件

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

登录

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

项目配置

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

刷新配置

如果在抖音云控制台对小程序和服务进行修改后(比如新建服务、删除旧服务,更改用户小程序的权限等),需要手动刷新配置。点击刷新配置按钮刷新配置,插件会校验当前配置的有效性,如果没有效需要重新进行配置。

本地调试

通过抖音云插件可以将项目部署在本地 Docker 容器中,并且通过抖音云代理可以访问抖音云 dev 环境的数据库资源(比如 MySQL、 Redis、 Mongo 等),而无需开启数据库资源的公网访问,保证数据安全。
下面将介绍如何通过抖音云插件进行本地开发和调试,所使用代码示例为抖音云官方 java-springboot demo 服务端项目,项目地址:抖音云官方springboot demo

1. 启动抖音云代理

    1.在IDEA中Run/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
# 基础镜像,按需替换java版本镜像 FROM openjdk:17-oraclelinux8 # 环境变量,从云端dev环境拉取,需要手动填充密码等相关信息 ENV MYSQL_ADDRESS=dycloud-local-proxy:3306 ENV MONGO_ADDRESS=dycloud-local-proxy:3717 ENV REDIS_ADDRESS=dycloud-local-proxy:6379 ENV CLOUD_ENV=DEV ENV MYSQL_USERNAME=test ENV MYSQL_PASSWORD=请自行输入对应密码信息 ENV MONGO_USERNAME=root ENV MONGO_PASSWORD=请自行输入对应密码信息 ENV REDIS_USERNAME=default ENV REDIS_PASSWORD=请自行输入对应密码信息 ENV SERVICE_ID=1jdoyz791cvnd
说明
    第1行 FROM openjdk:17-oraclelinux8,服务默认的基础镜像,如果开发者项目对jdk版本有要求,可自行按需替换java版本的镜像。
    第4行 - 第14行对应于开发者所配置的service在抖音云dev环境的环境变量,其中MYSQL_ADDRESSMONGO_ADDRESSREDIS_ADDRESS对应的地址修改为了dycloud-local-proxy
    这是为了进行流量转发,开发者在项目中需要通过环境变量的方式来获取访问数据库的地址,进而在本地调试时实现访问云端数据库。
    由于安全原因,需要开发者自行填入访问数据库的对应的密码信息,参见上述示例的第9行、第11行以及第13行。
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 networks: dycloud0: name: dycloud0 external: true
说明
    上述配置文件主要涉及本地服务容器启动时的一些配置信息,包括容器网络信息、hosts信息等。

2.1 在IDEA中完成SpringBoot运行时配置并启动服务

在 IDEA Run/Debug Configurations 新创建一个 SpringBoot 配置:
点击 Run on,选择Docker...或者Docker Compose...新建一个Run Targets。开发者可自行按照下面2.1.1或者2.1.2小节的内容,创建Run Targets

2.1.1 选择Docker

说明
    Dockerfile配置项:选择刚刚生成的dycloud.Dockerfile文件。
    Context folder配置项:默认为.,可忽略。
展开Optional选项:
    Image tag配置项:用于标识构建的镜像,可自定义填写,上图填写service
    Run options配置项:填充如下内容:
--entrypoint= --rm -p 8000:8000 --network dycloud0 --ip 17.100.0.2 --add-host config-center.dycloud.run:17.100.0.3 --add-host developer.toutiao.com:17.100.0.3 --add-host open.douyin.com:17.100.0.3 --add-host webcast.bytedance.com:17.100.0.3 --add-host ws-push.dycloud-api.service:17.100.0.4
    勾选Rebuild image automatically every time before running code
点击Next执行下一步:
等待执行完成,点击Next继续下一步:
注意
JDK home pathJDK version配置会由IDEA自动检查镜像并生成,如果执行到当前步骤发现并未生成,可尝试下面两种办法:
    点击Previous,回到上一步,等待IDEA重新执行检查并点击Next
    自行填写:对于抖音云默认选用的基础镜像openjdk:17-oraclelinux8,其配置如下:
    JDK home path:/usr/java/openjdk-17
    JDK version:17.0.2。
    如果更换了其余基础镜像,可以在互联网上自行寻找对应镜像的Java RunTime配置信息。
点击Create,完成创建。

2.1.2 选择Docker Compose

Configuration files选项中,选择刚刚生成的dycloud-docker-compose.yml文件:
点击Next,等待IDEA执行:
继续点击Next
注意
JDK home pathJDK version配置会由IDEA自动检查镜像并生成,如果执行到当前步骤发现并未生成,可尝试下面两种办法:
点击Previous,回到上一步,等待IDEA重新执行检查并点击Next
自行填写:对于抖音云默认选用的基础镜像openjdk:17-oraclelinux8,其配置如下:
JDK home path:/usr/java/openjdk-17
JDK version:17.0.2。
如果更换了其余基础镜像,可以在互联网上自行寻找对应镜像的Java RunTime配置信息。
点击Create完成创建。

2.1.3 启动服务

完成创建后,在SpringBoot配置页中选择刚刚创建的Run Targets
完成余下的配置,点击OK完成配置创建。
点击Run/Debug按钮启动服务或者断点调试服务:
注意
在启动窗口的上方(见上图标注),有一行提示:Application port 8000 is bound to local port 57800
该提示表明服务docker的8000端口和宿主机的57800端口绑定。
观察服务日志,当服务正常启动时,可以在Docker Desktop中看到服务docker已经正确启动,并且状态为Running

本地接口调试

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

一键部署

抖音云插件支持将项目工程一键部署到抖音云端的dev环境,在工具栏中点击一键部署按钮,并在弹出框中完成镜像版本和发布备注的填写,点击 OK 开始一键部署。
填写对应的镜像标签和发布备注,点击 OK 按钮开始部署。
点击 OK 后,会在Douyin Cloud Console中实时显示部署的日志信息,便于查看部署情况。
您也可以通过跳转抖音云控制台来查看您此次的部署情况。

常见问题

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

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

服务容器启动后,并未和本机的8000端口绑定

当服务容器启动后,访问本机的 8000 端口发现访问不通,提示Connectin refused。打开Docker Desktop发现服务容器的8000端口并没有和本机的8000端口正确绑定:
原因:当通过Docker Compose方式启动服务容器时(即2.1.2小节),IDEA无法正确识别出端口绑定的信息。这是Jetbrains官方的bugDockerCompose target. Port bindings from docker-compose file are absent in the target container,解决方案如下:
    通过docker的方式启动服务容器(即2.1.1小节)。
    上述bug在IDEA 2024.2 EAP 1版本中修复,可以检查IDEA的版本并更新至上述版本。

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

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

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

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