KodeRunr 基于Docker 的 Code Runner KodeRunr

jaxihe@gmail.com • 2047 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
### 简介 KodeRunr (读作 code runner) 是款我在闲暇时间用Go语言编写的应用。顾名思义,你可以用它在网页上、命令行里写程序,贴代码,与此同时无需在本地安装任何编程语言。 网址:http://koderunr.tech/ Github: https://github.com/jaxi/koderunr ### 截图 ![命令行分享代码](https://camo.githubusercontent.com/bfb1c962177521dbb8faf9fe656bf45718988b56/687474703a2f2f672e7265636f726469742e636f2f4d4962614d56797169712e676966) ![命令行版本 KodeRunr](https://camo.githubusercontent.com/bbd6832d296396b31dc132c2dde829c4e50994de/687474703a2f2f672e7265636f726469742e636f2f475932786b53663136422e676966) KodeRunr 具有以下几个特色: ### 持编程多种流行编程语言 * Ruby - 2.3.0 * Ruby - 1.9.3-p550 * Python - 2.7.6 * Python - 3.5.0 * Swift - 2.2 * C - GCC 4.9 * Go - 1.6 * Elixir - 1.2.3 ### Unbuffered IO 支持即使输入输出 - 在截图中你可以看到 stdin 和 stdout 都是异步发生的 (无需像 Online Judge 平台那样一次性输入 input) ### 跨平台 * 可在 Chrome, Firefox, Safari 中流畅运行 (因为使用 EventSource 的浏览器技术,现暂不支持 IE 浏览器) * 跨平台命令行 - 采用了 Go 强大的交叉编译技术,即使在你的电脑上没有安装编程语言,也可以通过 kode 在命令行中即时运行各种程序。现支持在 OS X, Linux (x86 & ARM), FreeBSD, OpenBSD 下的二进制命令行,可以在 https://github.com/jaxi/koderunr/releases 上找到打包的二进制文件 ### 基于 Docker 使用Docker容器作为untrusted code的运行环境。其原理是,在程序运行前创建相对应编程语言的Docker容器,然后在Docker中运行相对应的代码,同时通过 Docker API的streaming和Redis队列,将stdin, stdout, stderr 在 Docker容器和宿主之间传导,与此同时通过Server Sent Events将数据传输到客户端。 出于对安全和性能的考虑,限定了容器的CPU quotas和内存的使用率;在容器中禁网; 每个容器限15秒内运行;程序运行完毕后自动销毁容器。 现使用 Docker 1.11 和 4.3.0-040300-generic 内核对 pids 数量进行限定,以此应对 fork bombing. 现只支持4台容器同时运行(毕竟部署在低配 DigitalOcean 服务器上) ### 部署环境 * DigitalOcean $ 5/mo VPS * Nginx 做静态页面服务,以及 Go web 应用的代理服务
授权协议:
MIT
开发语言:
Go 查看源码»
操作系统:
Linux, OS X, OpenBSD 以及FreeBSD
2047 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传