Docker實現在線代碼運行工具

文章詳見:http://www.bytekits.com/tsingchen/it-blog/docker-run-code.html

在一些網站上看到過在線代碼運行工具,後來也查了一下資料,發現是用Docker實現的。
網頁如下:
https://www.toolfk.com/
https://www.toolnb.com/toolslist/14.html

當然對Linux也不是很熟,就看了一下別人的方案,做個筆記
網上說使用的DOCKER的核心代碼如下,主要是寫入文件,執行文件,然後把DOCKER關閉。


 
  1. $python_version = $version==$defaultVersion?"python:3.5":"python:2.7";
  2. $random_name = "python".mt_rand(1,999999999999);
  3. $cmd = env("TOOL_TIMEOUT_PATH")." --signal=SIGKILL 3 ".env("TOOL_DOCKER_PATH")." run --name {$random_name} --rm -m 200M -v {$base_url}:/usr/src/myapp -w /usr/src/myapp {$python_version} python $filename 2>&1 ";
  4. $res = shell_exec($cmd);
  5. $del_cmd = env("TOOL_DOCKER_PATH")." rm -f $random_name";
  6. shell_exec($del_cmd);

參數說明

--name {$random_name} 生成docker名字
--rm 指定容器退出後是否自動刪除,默認爲—rm=true
-m 200M 指定運行內存大小
-v {$base_url}:/usr/src/myapp 掛載主機上的文件減倉到容器內
-w /usr/src/myapp 容器內的默認工作目錄
env("TOOL_DOCKER_PATH")可臺爲docker5的安裝目錄爲”/xxx/xxxx/docker”
env("TOOL_TIMEOUT_PATH") 估計就是timeout吧

詳見 如何限制 docker run 容器執行時長

ruby語言版的實現

當然GIThub上也有人實現了
https://gitee.com/moli/runcode

 

字節流(www.bytekits.com.com)提供了編程的基礎技術教程, 介紹了關於我們,工具軟件,Bochs,Duilib,bat批處理,正則表達式,C/C++技巧,Linux命令,ARP,SQL,硬盤MBR分區,FAT文件系統,NTFS文件系統,ReactOS,Nasm,BIOS,IDA Pro,Windbg,C++11,Windows功能編程,Windows消息,libuv,http,gcc,cef,Sqlite,WebKit,CentOS7運維,我的技術博客,Windows內核調試,USB學習筆記,UVC,春風博文,FC協議詳解,禮儀規範,SQL經典語句大全,硬件接口,隨手筆記,WindowsAPI函數,Linux驅動基礎,FPGA環境搭建,FPGA任務函數,VBScript,FPGA爬坑行,Docker教程,等各種編程語言的基礎知識。 同時本站中也提供了大量的在線實例,通過實例,您可以更好的學習編程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章