天天看點

Codespaces個性化背景伺服器配置指南

作者:程式員欣宸

歡迎通路我的GitHub

這裡分類和彙總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos

前文概覽

  • 在前文《浏覽器上寫代碼,4核8G微軟伺服器免費用,Codespaces真香》中,咱們以一個Java程式員的視角體驗了GitHub的Codespaces産品的beta版,用浏覽器編碼并運作,體驗上接近桌面版vscode,并且還能免費使用4核8G伺服器執行編譯運作的消耗資源的操作,讓平闆電腦、破舊電腦都能流暢的編寫和運作代碼,當時的感覺真是:
Codespaces個性化背景伺服器配置指南

本篇概覽

  • 然而,哪有十全十美的事情,運作應用的伺服器是GitHub自動配置設定和設定的,裡面的一切都是預設的,很難符合我們的實際需要,例如:
  1. JDK版本固定是17,然而我Java8用得666
  2. Maven版本固定是3.8.5,然而我可能還在用3.8.4
  3. 微服務很常用,然而沒有注冊中心,服務起不來
  • 是以,不解決個性化設定的問題,Codespaces于我而言隻是個HelloWorld工具
  • 當然了,這麼明顯的問題官方不會坐視不管的,今天就請随欣宸一同掌握如何對背景伺服器進行個性化設定,并且将這些設定保留下來,随時想用就用
  • 本篇由以下内容構成
  • 分析伺服器可配置的基本原理
  • 修改伺服器配置
  • 讓配置生效
  • 驗證
  • 儲存配置
  • 驗證配置能不能在新的codespace使用
  • 注意:篇幅所限,今天咱們僅掌握如何配置個性化伺服器的技巧,至于配置一些實用的、稍微複雜的個性化環境的操作就留在下一篇吧

分析伺服器可配置的基本原理

  • 動手配置前,需要弄清楚之前反複提到的免費的微軟伺服器到底是什麼概念?一台電腦?還是一個虛拟機?
  • 來回顧官方的說明,如下圖,所謂的免費的微軟伺服器,4核8G記憶體32G硬碟,其實就是下圖的綠色部分,一個docker容器
Codespaces個性化背景伺服器配置指南
  • 下圖是官方文檔,也證明了docker容器這一說法
Codespaces個性化背景伺服器配置指南
  • 咱們對着上面的圖來捋一捋:
  1. 微軟的Azure,就像阿裡雲一樣,提供了很多雲伺服器
  2. 這些雲伺服器由很多虛拟機組成(用過ECS的讀者應該很容易了解)
  3. 虛拟機上裝了docker
  4. 作為GitHub個人開發者的咱們在頁面上點選建立Codespaces
  5. 虛拟機上的docker建立一個容器,并且限制了4核8G記憶體32G硬碟
  6. 建立的docker容器中,代碼被複制進來
  7. 網頁版的vscode和docker容器建立聯系
  8. 咱們可以愉快的寫代碼并且運作了,docker容器表現得就像個普通的linux伺服器一樣,處理着來自網頁的各種指令
  • 以上就是從建立到運作的過程了,但是等一下!JDK和Maven,好像捋的時候沒有提到呀,這要是漏掉了,欣宸你也太水了,滾吧…
  • 寫了那麼多docker方面的原創,JDK和Maven怎麼來的這種關鍵資訊自然是不會漏掉的,注意了,真像隻有一個,看下圖的黃色字型
Codespaces個性化背景伺服器配置指南
  • 容器的内容來自docker鏡像,是以接下來會順着這個思路去探尋真像
  • 接下來按照下圖的流程開始實踐
Codespaces個性化背景伺服器配置指南

建立一個codespace,再配置它

  • 再建立一個Codespace,操作如下圖
Codespaces個性化背景伺服器配置指南
  • 選擇合适的分支,點選底部的Create codespace
Codespaces個性化背景伺服器配置指南
  • 此刻會進入網頁版vscode頁面,一切都和前一篇咱們第一次建立codespace一樣
  • 接下來開始配置容器了,如下圖操作可以打開指令面闆
Codespaces個性化背景伺服器配置指南
  • 輸入dev container,會過濾出兩條記錄,滑鼠點選第一條Add Development Container Configuration Files…
Codespaces個性化背景伺服器配置指南
  • 這時候會出現所有預定義好的配置,如下圖,此時可以在輸入框資料關鍵詞過濾
Codespaces個性化背景伺服器配置指南
  • 我這裡就選Java 8,然後會提示讓您繼續選擇,如Debian的系統版本,要不要Node.js,要不要Maven,要不要Gradle等
Codespaces個性化背景伺服器配置指南
  • 最後給出一堆軟體清單,問你要不要預裝,您可以按需標明
Codespaces個性化背景伺服器配置指南
  • 點選OK按鈕完成標明,稍等數秒,發現代碼倉庫中新增了名為.devcontainer的檔案夾,裡面有兩個檔案:devcontainer.json和Dockerfile,這就是配置檔案,它們是打造個性化伺服器的關鍵
Codespaces個性化背景伺服器配置指南
  • 首先是Dockerfile檔案,這是制作容器鏡像的腳本,然後是devcontainer.json,顯然這是個配置,裡面有很多Dockerfile用到的配置項,如下圖,剛才咱們對maven和gradle的選擇就在devcontainer.json中保持着,然後在Dockerfile中用到
Codespaces個性化背景伺服器配置指南
  • 至此,真相大白:伺服器用的是上述Dockerfile建構的鏡像,另外還會工具devcontainer.json來做做一些配置,例如預裝vscode插件,是以,定制Dockerfile和配置devcontainer.json,就能打造出個性化背景伺服器

讓配置生效

  • 前面做了一些設定,結果也儲存在devcontainer.json檔案中了,但這些設定并沒有生效,在控制台輸入java -version檢查一下,還是17
Codespaces個性化背景伺服器配置指南
  • 為了讓剛才的配置生效,咱們需要用Dockerfile重新建構docker鏡像,再重新建立容器,在指令面闆中輸入rebuild container,選擇唯一的過濾結果
Codespaces個性化背景伺服器配置指南
  • 會彈出提示,大緻是說東西會保留,但是codespace會重建,點選Rebuild
Codespaces個性化背景伺服器配置指南
  • 現在開始建構docker鏡像了,需要稍等幾分鐘
Codespaces個性化背景伺服器配置指南
  • 大約兩三分鐘後完成鏡像建構和容器建立,vscode頁面自動被打開,這一次,再去試試java -version指令,如下圖,這版本号,1.8,如你我所願
Codespaces個性化背景伺服器配置指南
  • 至此,咱們已經掌握了修改配置并且使其生效的方法,所謂的自定義配置,就是按照自己的需求去深入修改devcontainer.json和Dockerfile檔案,使GitHub為我們建構出更個性化的鏡像

儲存配置

  • 剛才做的配置都存放在devcontainer.json和Dockerfile檔案中了,現在的問題是:如果後面建立一個codespace的時候,還能用這個配置嗎?總不能每建立一個codespace就配置一次吧
  • 儲存配置的方法很簡單:将devcontainer.json和Dockerfile檔案也送出到GitHub倉庫中即可,下次建立codespace的時候,就會根據這個配置建立容器
  • 咱們來試試,送出操作如下圖
Codespaces個性化背景伺服器配置指南
  • 再次建立一個codespace
Codespaces個性化背景伺服器配置指南
  • 熟悉的操作,選好分支,點選Create codespace
Codespaces個性化背景伺服器配置指南
  • 等待連接配接的頁面,顯示正在建構鏡像,這就很像了,畢竟預設鏡像是不需要建構的
Codespaces個性化背景伺服器配置指南
  • 進入vscode頁面後,迫不及待的輸入java -version,如下圖,妥妥的1.8版本,存在倉庫中的配置檔案會參與容器鏡像的建構,咱們的個性化配置可以長久保持并且始終生效了
Codespaces個性化背景伺服器配置指南
  • 至此,咱們已經掌握了如何配置容器并使之生效,也知道了如何儲存這些配置,以便在建立新的codespace時使用,然而,僅僅隻是知道如何修改配置并不能給我們帶來什麼,接下來的文章中,咱們去做一些實用的配置,做到更加貼近真實開發,敬請期待吧,欣宸原創不會讓您失望

歡迎關注頭條号:程式員欣宸

  • 學習路上,你不孤單,欣宸原創一路相伴...

繼續閱讀