2.0.1 • Published 6 months ago
@ostai/futuopend v2.0.1
Docker Image 镜像: ostai/FutuOpenD
真正可用的 FutuOpenD docker 镜像。
之所以创建这个项目的原因,是因为我试过很多 FutuOpenD 的 docker 镜像,要么是根本无法运行起来,要么没有处理短信验证码,或者是需要我们手动 docker exec 到容器里面处理验证码,导致根本不能够运维。
容器启动后会运行:
- 一个 FutuOpenD agent
- 一个 websocket 服务器,用于检查 FutuOpenD agent 的就绪状态,并支持你提供短信验证码,来进行必要的初始化
该镜像始终使用 DOCKER_DEFAULT_PLATFORM=linux/amd64 构建(why?)并可在 Ubuntu 和 MacOS 上运行。
安装
docker pull ostai/futuopend:latest或者
docker pull ostai/futuopend:9.2.5208最新支持的 FutuOpenD 镜像版本
9.2.5208_Ubuntu16.04
用法
环境变量
- FUTU_LOGIN_ACCOUNT
string(必填) - FUTU_LOGIN_PWD_MD5
string(必填) - FUTU_LANG
string,默认chs - FUTU_LOG_LEVEL
string,默认no - FUTU_PORT
integer,FutuOpenD 的端口,默认11111 - SERVER_PORT
integer,websocket 服务器的端口,默认8000 - FUTU_INIT_ON_START
string="yes",容器启动时是否初始化 Futu OpenD agent,默认"yes" - FUTU_SUPERVISE_PROCESS
string="yes"是否需要监控 FutuOpenD 子进程,并且在退出的时候尝试重新连接。
Docker Run:如何启动容器
docker run \
--name FutuOpenD \
-e "SERVER_PORT=8081" \
-p 8081:8081 \
-p 11111:11111 \
-e "FUTU_LOGIN_ACCOUNT=$your_futu_id" \
-e "FUTU_LOGIN_PWD_MD5=$your_password_md5" \
ostai/futuopend:latestWebSocket 服务器
const {WebSocket} = require('ws')
const ws = new WebSocket('ws://localhost:8081')
ws.on('message', msg => {
const data = JSON.parse(msg)
if (data.type === 'REQUEST_CODE') {
ws.send(JSON.stringify({
type: 'VERIFY_CODE',
code: '12345'
}))
return
}
if (data.type === 'STATUS') {
console.log('status:', data.status)
return
}
})
ws.on('open', () => {
ws.send(JSON.stringify({
type: 'STATUS'
}))
// 如果环境变量 FUTU_INIT_ON_START=no,
// 我们需要手动初始化 FutuOpenD,让它启动
ws.send(JSON.stringify({
type: 'INIT'
}))
})下行和上行消息均为 JSON 格式。
下行消息:服务器 -> 客户端
{
"type": "REQUEST_CODE"
}表示 FutuOpenD agent 需要你提供短信验证码
{
"type": "CONNECTED"
}表示 FutuOpenD agent 已连接
{
"type": "STATUS",
"status": -1
}服务器返回当前状态。
{
"type": "CLOSED"
}表示 FutuOpenD 子进行(意外)退出
上行消息:客户端 -> 服务器
{
"type": "INIT"
}告诉服务器初始化 FutuOpenD agent,仅在环境变量 FUTU_INIT_ON_START 设置为 'no' 时有效
{
"type": "STATUS"
}请求服务器返回当前状态
{
"type": "VERIFY_CODE",
"code": "123456"
}向 FutuOpenD agent 提交短信验证码
贡献者指南
如何构建你自己的镜像
export VERSION=9.2.5208
export FUTU_VERSION=${VERSION}_Ubuntu16.04TAG=ostai/futuopend
docker build -t $TAG:$VERSION \
--build-arg FUTU_VERSION=$FUTU_VERSION \
.例如:
docker build -t ostai/futuopend:${VERSION} \
--build-arg FUTU_VERSION=${FUTU_VERSION} \
.