国产精品免费久久久久电影院_亚洲日韩蜜桃av无码一二三区_AV在线无码免费特黄毛片_亚洲欧美日韩电影在线专区_福利小视频午夜福利一区二区中文字幕_在线免费观看黄黄色视频_欧美菊爆视频在线观看免费_婷婷六月丁香五月_久久伊人精品中文字幕有码_强奸国产无码激情

云端IDE系列教程6:解決 WeTTY 在 Ubuntu 非 root 用戶不能運行的問題

2023-02-28

581

原文作者:kaiyun開云創(chuàng)新技術(shù)總監(jiān) 鄧冰寒


概述


上一期在使用官方容器鏡像快速成功地在 TitanIDE 運行起來了 WeTTY,但是不適合開發(fā)人員使用,而我自己編譯構(gòu)建出來的容器鏡像無法直接運行指定的應(yīng)用(/bin/bash 或 /bin/zsh),本來在 WeTTY的開源項目下面提了 issue,但貌似沒有得到響應(yīng),如果能在一個小時左右快速解決問題,折騰 WeTTY 這個開源軟件對我來說是有價值的。


折騰經(jīng)歷


在經(jīng)過權(quán)衡利弊(內(nèi)心掙扎)之后,為了給開發(fā)者提供最好的使用體驗,我決定花一個小時左右的時間在 TitanIDE 上看看是什么原因?qū)е?WeTTY 不理會我傳遞的參數(shù) --command。


首先在 TitanIDE 創(chuàng)建一個 NodeJS 的項目,這里我采用了 VS Code for Node.js 作為 WeTTY 的開發(fā)環(huán)境。


云端IDE玩轉(zhuǎn)WeTTY


創(chuàng)建好項目之后,緊接著就是來執(zhí)行使用開源項目的三把斧,fork,clone,run。


云端IDE玩轉(zhuǎn)WeTTY


分析問題


如上一期文章所提到的,既然--command在官方提供的鏡像可以正常工作的,沒有理由我自己運行的不行,肯定是有環(huán)境的差異性。經(jīng)過一番順藤摸瓜式的盤查,在我預(yù)期的時間內(nèi)找到了問題的根本原因。


首先,WeTTY 在啟動的時候會先獲取 cmmand,如下代碼所示:


云端IDE玩轉(zhuǎn)WeTTY

localhost 的判斷函數(shù)又有一行代碼判斷 uid 是否為 0, 即 root 用戶才能在 localhost 啟動自定義命令,這邏輯很怪,不知道設(shè)計者是怎么考慮的. TitanIDE 使用了 Ubuntu 作為操作系統(tǒng),默認(rèn)用戶為非 root,因此在 Ubuntu 沒法正常運行。



解決問題


經(jīng)過以上分析,問題已經(jīng)得到解決,我傳遞的參數(shù) --command /bin/zsh 已經(jīng)起作用了,以下命令是完整的命令行:


yarn start --port=8080 --base / --command /bin/zsh


如下圖所示,我將 process.getuid() === 0 這行代碼去掉后,WeTTY 運行一切正常:


云端IDE玩轉(zhuǎn)WeTTY


制作鏡像


和上期所介紹的一樣,我們也是在 TitanIDE 使用 TepmlateMaker 創(chuàng)建一個 WeTTY 的項目,用于制作 WeTTY for Ubuntu 的模板鏡像。


云端IDE玩轉(zhuǎn)WeTTY


創(chuàng)建好 template-wetty 之后,先編輯 WeTTY 的啟動腳本以在 Dockerfile 備用:


云端IDE


然后編輯 Dockerfile 以實現(xiàn) WeTTY 在 Ubuntu 下面作為一個開發(fā)環(huán)境。這里使用了 TitanIDE 的基礎(chǔ)鏡像 template-core:v20230119-1cfbd2e,該基礎(chǔ)鏡像基于 Ubuntu 20.04,包含了開發(fā)者常用的工具,如 kubectl, helm,git 等 。以下是完整的 Dockerfile:


在線代碼編輯器


在 TitanIDE 的工作區(qū)直接執(zhí)行 make 命令構(gòu)建出 WeTTY 的模版鏡像:


云端IDE


代碼編輯器 在線


驗證效果


然后使用 WeTTY 模板鏡像 titan.hub:5000/demo/template-wetty:v20230131-1b25d1b 創(chuàng)建 WeTTY 模版:



最后,使用 WeTTY 模版來創(chuàng)建 WeTTY 項目。驗證最終效果,如下圖所示。



在云端使用 Vim,真香!

href="/"



總結(jié)


在選用如 WeTTY 這樣的開源軟件過程中,和使用其他開源軟件一樣,并不是無償完全無償使用的,為了價值的最大化,這就需要像 TitanIDE 這樣的開發(fā)環(huán)境,在 TitanIDE 上面折騰的這些開源軟件有個好處就是,我不需要為了某個開源軟件去準(zhǔn)備開發(fā)環(huán)境,因為 TitanIDE 提供了我要的開發(fā)環(huán)境模板,開箱即用。在這個基礎(chǔ)之上,我們又可以創(chuàng)建屬于自己的模版,本文展示了如何在 TitanIDE 快速解決開源軟件的問題,然后定制一個 WeTTY 云端 Terminal 作為開發(fā)環(huán)境的完整過程,希望能幫到有需要的開發(fā)者。


本文是系列文章《在 TitanIDE 玩轉(zhuǎn)云原生 Terminal 系列》,我將會在下一篇繼續(xù)就這個話題展開探索,敬請期待!


最后,感謝閱讀!




點擊鏈接,TitanIDE 免費體驗>>


TitanIDE是什么



技術(shù)交流
我們建立了多個云原生技術(shù)交流群,其中有來自O(shè)racle、Citrix、華為、騰訊等國內(nèi)外云計算專家,立即掃碼,拉你進(jìn)群。目前已有2000+開發(fā)者加入我們......
云原生廠商 云原生技術(shù)服務(wù)商
在云原生時代,kaiyun開云創(chuàng)新致力于通過賦能開發(fā)者,實現(xiàn)企業(yè)快速迭代與交付,大幅提升創(chuàng)新效率。
產(chǎn)品下載