利用 VS Code 構建基於容器的開發環境

2022-01-08 CSDN


以下為譯文:

長話短說,你可以使用 Docker 和 VS Code 的遠程容器來建立一個容器化的本地開發環境,這樣就可以讓團隊成員儘快完成入門培訓。你不僅可以在所有環境中使用同一個基礎鏡像,而且還可以為所有開發人員提供相同的編輯器,此外還更容易標準化實現。但這種方法並非適合所有人,如果你不喜歡 VS Code 作為代碼編輯器的話,則可以跳過本文,除非你想嘗試一下。

為團隊設置本地開發環境時,我們所面臨的挑戰之一就在於,確保所有開發人員的設置都相同或者能夠滿足需求。這個問題常見的解決方法是制定入門指南,並希望開發人員遵循這些指南。但是,由於版本兼容性問題和個人經驗等問題,導致我們無法使用正確的工具,因此實現統一的環境設置實則困難重重。

圖:常見的環境設置方法。

另外一種解決方案是,準備一個預先配置好的開發環境,其中包含了所有必需的庫及依賴項,該環境可以直接作為容器啟動。這樣,開發人員就可以在容器提供的隔離環境中工作了。這種方式可以極大地減少開發人員花費在克隆代碼庫上的時間。

圖:使用基於容器的開發環境。

除了為所有開發人員提供相同的環境之外,我們還可以在 Visual Studio Code 中使用同一套工具、擴展甚至主題集。儘管這不是必須的,但我們可以利用它來自動安裝項目所需的特定擴展。這種方式可以避免工具的不一致,而且開發人員也可以免卻手動安裝的麻煩。

所有這些工作都可以通過Docker 與 VS Code 的 Remote-Containers 擴展的結合來實現。

設置

在本文中,我將展示一個在 Node 環境中運行 JavaScript 應用程式的示例。有關的詳細說明請參見官方文檔(https://code.visualstudio.com/docs/remote/containers)。

首先安裝Docker 和 VS Code,然後在 VS Code 中安裝 Remote — Containers 擴展,並確保Docker 可在你的機器上正常運行。

打開項目,在根目錄下創建一個名為 .devcontainer 的文件夾。這個新文件夾內包含開發容器所需的配置文件。

在 .devcontainer 中創建 Dockerfile 和 devcontainer.json,並添加以下配置。

FROM node:14.17.0-alpine

RUN apk updateRUN apk add git
{"name": "DevContainer ReactApp",
"dockerFile": "Dockerfile",
"initializeCommand": "yarn install",
"postStartCommand": "yarn start",
"forwardPorts": [3000],

"extensions": ["dbaeumer.vscode-eslint","esbenp.prettier-vscode","eamodio.gitlens"]}

在完成上述工作後,我們來構建容器。首先,點擊VS Code 命令面板中的「Open Folder in Container」或「Reopen in Container」。

這一步是初始化開發容器,拉取 Docker 基礎鏡像、配置容器,然後啟動開發伺服器。

完成這一步,你就應該能夠在瀏覽器中訪問應用程式,並正常使用 VS Code 進行開發了。就連熱重載都能正常工作!我創建了一個代碼庫(https://github.com/Gigacore/devcontainer-react-example),其中包含一個示例,你可以嘗試一下!

容器的構建和配置只需要執行一次,但是需要一定的時間。以後如果不發生變化,那麼重建會更快。但是,如果 devcontainer.json 或 Dockerfile 發生變化,則需要重新構建。如果你嘗試直接重新打開,系統會提示你重建。

在退出容器或 VS Code 後,下一次可以通過 」Reopen in Container」 選項重新進入容器。該選項會啟動已配置的容器,並再次啟動開發伺服器。如果VS Code 在代碼庫中找到 .devcontainer 配置,則會自動提示你啟動容器。

容器和本地計算機之間的文件系統是同步的,因此你可以通過任一環境訪問代碼。

你可以運行任意多個應用程式,即便它們需要不同版本依賴項,而無需在計算機上安裝或修改任何應用程式。

團隊中的任何人都可以在自己的計算機上運行應用程式,編寫和審核代碼,或者做一些嘗試,包括非技術成員。

應用程式的運行不需要依賴作業系統。

常見問題和解決方法


並非適合所有人

雖然這種做法可以降低構建開發環境的難度,但是對於需要在容器範圍之外的環境中進行廣泛集成和配置的應用程式來說並不理想。

高級用戶和經驗豐富的開發人員可能不太喜歡這種方式,特別是有些人更喜歡其他代碼編輯器。這種設置方式可以作為備選,不要強迫開發人員運行容器,他們仍然可以手動設置環境。

如果應用程式佔用了大量資源,則運行 Docker 容器可能會消耗更多資源。

總結

這是一個相對較新的概念,有許多地方需要探索,而且也有很多限制需要解決。我個人很喜歡這種方式,而且也比較推薦。如果你也採用了這種方式,請在下方留言分享你的經驗。

原文連結:https://santhoshsundar.medium.com/building-container-based-development-environment-with-visual-studio-code-2d7111c650bd

聲明:本文由CSDN翻譯,轉載請註明來源。


生於2001年的《程式設計師》曾陪伴了無數開發者成長,影響了一代又一代的中國技術人。時隔20年,《新程式設計師》帶著全球技術大師深邃思考、優秀開發者技術創造等深度內容回來了!同時將全方位為所有開發者呈現國內外核心技術生態體系全景圖。掃描下方小程序碼即可立即訂閱!

相關焦點

  • Visual Studio Code 正式版本 1.34,遠程開發擴展仍不可用
    4月份,官方忙於遠程開發擴展的預覽版。通過這些擴展,開發者可以在遠程計算機或VM,Windows子系統Linux(WSL)或Docker容器內通過SSH使用VS Code。可以閱讀Visual Studio Code博客文章中的遠程開發以了解更多信息。如果您想在網上閱讀這些發行說明,去更新上code.visualstudio.com。
  • 10 個國外頂尖的 lowcode 開發平臺
    這些工具通過減少手工編碼的工作量來幫助快速開發代碼。它們不僅有助於編碼,還有助於快速設置和部署。筆者近期調研了幾家國外的lowcode平臺, 也參考了很多資料, 確實收穫很多, 接下來就來給大家介紹一下國外比較有名的lowcode開發平臺.1.
  • 手把手教你搭建3款遠程開發環境:Pycharm、Jupyter notebook以及code-server!
    Jupyter是一個基於Python的交互式筆記本開發環境,一般在數據分析和算法研究領用的比較廣。它最早叫做Jupyetr Notebook,現在功能進行了升級和改版,稱作JupyterLab。說起code-server這個東東,知道的估計不多,但如果說起VScode,想必在IT圈無人不知無人不曉。VScode是一款輕量級的文本編輯器,由於配置靈活以及插件海量的特點,可以搭建很多種語言的項目開發環境,所以深受大家的喜愛,被稱為世界上最強的編輯器!
  • 雲原生時代,容器持久化存儲方案選對了嗎?
    容器為網際網路應用提供了絕佳的運行環境,顛覆了企業級應用交付的模式,敏捷開發、快速交付、可移植,成為容器行走江湖的獨特標籤。早期容器技術更多應用於開發測試環境,一度成為軟體開發人員的樂土。而現在,隨著雲原生對業務創新的影響力持續顯現,越來越多的企業開始將容器應用於生產環境。前者更側重容器本身帶來的便利,而後者需要解決數據持久化存儲等諸多問題。
  • 利用python免殺cs shellcode
    0x02 概述1、什麼是shellcode在維基百科中這樣解釋道:在黑客攻擊中,shellcode是一小段代碼,用於利用軟體漏洞作為有效載荷。它之所以被稱為「shellcode」,是因為它通常啟動一個命令shell,攻擊者可以從這個命令shell控制受損的計算機,但是執行類似任務的任何代碼都可以被稱為shellcode。
  • 一文說清 KubeSphere 容器平臺的價值
    對於企業 KubeSphere 是什麼 KubeSphere 是在 Kubernetes 之上構建的 多租戶 容器平臺,以應用為中心,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工作流。
  • 容器雲平臺選型指南
    根據Flexera發布的《2020年雲計算現狀報告》,容器技術在全球企業中的使用範圍不斷增長,有65%的受訪組織表示他們正在使用Docker容器,58%的企業表示他們正在以某種方式使用Kubernetes編排系統。結合調查結果,目前資源與專業知識的欠缺已經成為使用容器技術構建並維護應用程式的主要挑戰。
  • 基於容器部署hugo博客 – hugo個人博客折騰記之後篇
    ></pre>二者的解析引擎都是基於正則表達式的, 有錯漏肯定是難免的。也就是_default是默認配置,production 或 development 可以覆蓋,也可以增加配置直接運行hugo serve時的默認環境是development直接運行hugo時的默認環境是production這樣非常方便本地開發和部署到線上時切換不同的配置。但是看了一下,官方的文檔對於這個功能的描述非常的不清晰。
  • Python玩數據入門必備系列(2):vs code 寫 Python
    此系列文章可在以下公眾號目錄找到 :文章目錄 > Python入門必備 > 必備知識 > 最近有許多小夥伴問我要入門 PyPython 的資料,還有小夥伴完全沒有入門 Python 就直接購買了我的 pandas 專欄。
  • 在Win上做Python開發?當然是用官方的MS Terminal和VS Code了
    本文將帶你了解如何利用微軟官方維護的 MS Terminal 與 VS Code,來為 Python 開發保駕護航。使用 Windows 系統一大好處是它的應用太豐富了,甚至強大的 GPU 也能在閒暇時間做點其它「工作」。然而與 Linux 或 macOS 不同,在 Windows 上做開發總會遇到很多挑戰,不論是文件編碼、環境控制還是項目編譯,開發過程中總會有一些神奇的收穫。
  • 2020年中國容器雲市場研究報告
    使用虛擬機如同將作業系統、環境配置和程序代碼一同打包從而部署到不同物理伺服器上;而容器則僅僅打包環境配置和程序代碼,部署到多個作業系統上。對於應用開發和提供商而言,下遊客戶通常已經具備作業系統環境,使用虛擬機再次打包作業系統會造成資源的浪費並降低程序運行速度。容器在提供虛擬化運行空間的同時減少了資源的調用,可以被視作更為輕量、高效的虛擬機。
  • 容器管理平臺的項目實戰 ---應用微服務化與CICD
    、Azure等,可實現對企業不同的基礎資源的統一化管理,降低系統運維難度4、提升資源利用率:容器是基於作業系統的輕量級虛擬化技術,共享作業系統的內核進程和內核資源,從而有效節省作業系統級資源開銷,容器啟動速度快,佔用資源少,通過容器密度的提升更好的利用資源5、管理更加簡單: 使用容器技術,只需要小小的修改,就可以替代以往大量的更新工作
  • Ubuntu下安裝並設置Visual Studio Code
    在Linux系統下編輯程序代碼,有人選擇使用vi,有人選擇Emacs,這些神器雖然功能強大且擴展性極強,不過對於新手來說非常的不友好
  • 如何利用Docker快速建置OpenVINO Toolkit開發環境
    為解決這項問題,OpenVINO也有推出Docker安裝方式,輕鬆搞定安裝及執行問題,且可有效隔離不同版本及其它開發環境。接著就簡單說明「什麼是Docker?和虛擬機VM有何不同?」、「如何安裝Docker工作環境」及「如何使用Docker安裝OpenVINO」,最後再以一個範例來說明「如何利用公開模型mobilenet執行影像分類」。什麼是Docker?
  • 誰是容器中的「戰鬥機」?Docker與Chef、LXC等容器對比
    Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。Docker可以自動化打包和部署任何應用、創建一個輕量級私有PaaS雲、搭建開發測試環境、部署可擴展的Web應用等。
  • 使用Amazon SageMaker 運行基於 TensorFlow 的中文命名實體識別
    一、背景利用業內數據構建知識圖譜是很多客戶正在面臨的問題,其中中文命名實體識別(Named Entity Recognition,簡稱NER)是構建知識圖譜的一個重要環節。我們在與客戶的交流中發現,現有的NER工具(比如Jiagu)對於特定領域的中文命名實體識別效果難以滿足業務需求,而且這些工具很難使用自定義數據集訓練。
  • 容器和Kubernetes對數據中心託管意味著什麼?
    它們僅需幾秒鐘即可啟動,而傳統的裸機或虛擬機環境可能需要幾分鐘才能啟動。它們主要使用開源技術構建,從而降低了購置成本和用戶擔心的供應商鎖定問題。容器將如何改變託管數據中心?當然,企業可以將容器化的應用程式部署在託管數據中心中,就像可以將其部署到其他任何地方一樣。但是這對託管行業意味著什麼?
  • 青雲科技QKE容器雲服務增強GPU能力 輕鬆構建 AI 應用
    隨著數字經濟的不斷發展, 企業數位化已經是大勢所趨。因此,企業需要更為靈活、敏捷的IT架構,幫助自己重構開發運維流程,最大程度提高應用開發效率並降低IT生產環境運維成本。同時,容器技術日漸興起,有效聯合了過去各自獨立的IT開發與運維環節,切實幫助企業快速構建雲原生應用,實現微服務和 DevOps 落地,從而加快業務創新迭代。
  • 人生苦短,我用 Visual Studio Code
    我最近也一直在尋找一款趁手的開發工具,但是市場上能寫Go語言的不是很多。找來找去發現 vs Code 似乎是個不錯的選擇,輕便強大,自由度高,語言豐富。你能想到的,vs Code 都支持!與PyCharm 和 Visual Studio 等重量級編輯器環境不同的是,vs Code是基於插件化的使用方式,使得每個人可以根據自己的需要去擴展自己的編輯器,保持了自己輕量化的使用優點!可以做到秒開!
  • 當容器拍了拍存儲,讓你「想用又敢用」雲原生
    都說容器正在改變IT世界,眼見為實,先來看看一個真實案例。國內一家排名前十的商業銀行,有一支幾十人規模的開發團隊,主要負責開發網際網路應用。之前在開發和測試中大量使用虛擬機,數千個虛擬機除了運維管理複雜外,對伺服器的需求量也極高。