WatchDog in Docker
- 使用
Golang实现的 可交互命令行 本机传递工具。 - 全程使用本机
127.0.0.1网络,无需外网与web,更不需要导出端口。对标
GoTTY了属于是……
当你在Docker容器中运行了一个需要输入输出的可交互命令(如mirai-console-loader),你只能望着日志干瞪眼,或者冒着Docker容器被你退出时顺手玄学关闭的风险执行docker attach。
但是现在,你可以选择在你的Docker容器中加入WatchDoger,只需要在原本的启动命令行前加上server,即可通过docker exec进入Docker容器执行client来连接到目标命令行。
-
Docker容器启动时用server启动目标"bash"如在
docker-compose.yml的command下将原来的可交互命令之前加上server即可。version: "3" services: demo: container_name: demo image: alpine:latest command: /bin/bash -c "chmod +x ./demobsah && chmod +x ./server && chmod +x ./client && ./server ./demobsah demoArg1 /demoArg2 -demoArg3"
-
需要交互时进入
Docker容器开启client连上server- 通过
/bin/bash进入client
docker exec -it demo bash root@demo:~# ./client > 2022/03/12 21:08:08 建立连接成功 #在这开始你的正常交互吧
- 直接进入
client
docker exec -it demo ./client > 2022/03/12 21:08:08 建立连接成功 #在这开始你的正常交互吧
- 通过
- SchoolPowerCrawlerAndDisplayor 的
school_power_mirai容器部分。
server端的使用是直接在原来的可交互命令前加上server吗?- 是的,如果有遇到某些参数无法传入的情况,请提交
issue。
- 是的,如果有遇到某些参数无法传入的情况,请提交
- 运行提示
Permission denied怎么办?- 请确保
server、client、目标命令 有可执行权限,具体可参考上方demo中的chmod +x。
- 请确保
- 只能在
Docker环境中使用吗?- 并不是,只是
Docker环境的需求比较典型而已,你有其他类似的需求也可以使用本项目。
- 并不是,只是
- 你的文档写的好拉,我看了还是用不来怎么办?
- 尝试用
Docker启动一个/bin/bash,然后去测试吧!
- 尝试用
- 我启动了
client并显示建立连接成功但是为什么无法交互?- 请检查
server日志,是否有已经在交互中的client,如有请前往对应client或等待对应client关闭。 - 本项目为减少一些不必要的bug(如交叉回显、同时输入等在非
Docker情境下不可能出现的情况),同一时刻只支持一个client连接到server,其他客户端会排队等待连接。
- 请检查
