Never Install Locally?試試 Dev Container

Never Install Locally?試試 Dev Container

最近換了新工作,到了一間資訊安全公司,讓我更加重視開發環境的安全。 還記得之前分享過透過 Distrobox 解決 Linux 環境依賴問題,用他來解決不同 Linux distribution 的依賴關係,背後即是讓程式跑在 container 內。 既然能夠將應用程式一來透過 container,與 Host OS 本身做出區隔,那麼我們也能透過 container 來對開發的依賴做出隔離。於是,開始擁抱 Dev Container,一個能讓我更安心、更有效率(?)的開發環境。 什麼是 Dev Container? 簡單來說,Dev Container 就是把開發環境「容器化」。我們可以把所有需要的工具、函式庫、設定檔都放在一個 Docker Image 裡,然後用這個 Image 啟動一個 Container 作為你的開發環境。 Consistency (一致性): 不管是在哪台機器上開發,只要有 Docker,就能保證開發環境完全一致。再也不用擔心「在我這台電腦上可以跑啊!」這種崩潰的狀況發生。 Isolation (隔離性): Dev Container 與本機系統完全隔離,可以避免各種依賴衝突,也能保護系統安全。 Reproducibility (可重現性): 透過 Dockerfile,你可以完整記錄你的開發環境設定,方便團隊協作和版本控制。 為什麼需要 Dev Container? 身為一個資安從業人員,Dev Container 解決了以下痛點: 不同版本的 Node 環境,告別 nvm!需要 node14, node16, node18 或是 stable 版本,隨時產生開發環境。 需要下載 malware 到本地進行 e2e 測試,透過 container 進行蛤蜊(🦪意象),盡可能避免破壞系統安全性。 在 macOS 上解決一些只支援 linux 的 binary,或是在 arm64 host 上透過 rosetta2 模擬 x86_64 環境,進而執行 amd64 執行檔。 使用 rootless 模式,在危機四伏的 npm 環境中,確保開發環境的安全性。 我的 Dev Container 工作流 我將 dev-container 放在 github omegaatt36/lab/dev-container 中,以下 demo 僅「目前版本」,會依據使用情境進行迭代。...

2025-03-01 · 4 min · 674 words