<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jetbrains on Hallblazzar: 開發者日誌</title>
    <link>https://dev-journal.hallblazzar.dev/zh-tw/categories/jetbrains/</link>
    <description>Recent content in Jetbrains on Hallblazzar: 開發者日誌</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <lastBuildDate>Mon, 20 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://dev-journal.hallblazzar.dev/zh-tw/categories/jetbrains/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>在開發流程中使用 Dev Containers</title>
      <link>https://dev-journal.hallblazzar.dev/zh-tw/posts/2026_apr_20_devcontainer/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://dev-journal.hallblazzar.dev/zh-tw/posts/2026_apr_20_devcontainer/</guid>
      <description>&lt;p&gt;這篇短文簡要介紹了我如何在開發流程中採用 Dev Container。如果你希望在使用現代 IDE 的同時，又能從管理不同程式語言/框架的複雜開發環境中解脫出來，Dev Containers 會是一個不錯的選擇。&lt;/p&gt;&#xA;&lt;p&gt;如果你是一名需要同時處理多個專案的軟體開發人員，有時可能需要在不同版本的程式語言/框架之間切換。雖然現代程式語言支援多版本管理器，例如 NodeJS &lt;a href=&#34;https://github.com/nvm-sh/nvm&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;NVM&lt;/a&gt; 和 Python 的 &lt;a href=&#34;https://docs.python.org/3/library/venv.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Virtual Environment&lt;/a&gt;，但使用者仍需仔細設定/選擇環境，以避免改動全域的 Runtime。&lt;a href=&#34;https://www.google.com/search?q=https://github.com/asdf-vm/asdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;asdf&lt;/a&gt; 是一個非常棒的全能解決方案，但它需要為每個專案進行額外設定。&lt;/p&gt;&#xA;&lt;p&gt;先前，我解決這種複雜性的方法是使用 Container。一般而言，我常用的專案結構如下：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; /path/to/project&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |-- deployment                   # 切換不同的目錄以使用不同的環境&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |   |-- production&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |   |   `-- docker-compose.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |   `-- development&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |       `-- docker-compose.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |-- dockerfile                   # 針對不同環境的實際 Dockerfiles&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |   |-- production&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |   |   `-- Dockerfile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |   `-- development&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |       `-- Dockerfile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; `-- src&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;對於本地環境開發，Source Code 會透過 &lt;code&gt;docker-compose.yaml&lt;/code&gt; 和 &lt;code&gt;Dockerfile&lt;/code&gt; 掛載到Container中，並安裝所有必要的 Language Runtime 與套件。因此，我可以在 IDE 中編輯程式碼並立即得到最新結果，而無需在機器上安裝所有 Dependencies 。然而，IDE 本身仍需要 Runtime。例如，在 JetBrains 系列 IDE 中，如果沒有這些環境，Syntax Highlighting 和 Debuggin 功能將無法運作，這使得 IDE 變成了單純高度消耗資源的文字編輯器。雖然有一些遠端開發的解決方案，但它們是實際上是透過 SSH 實作（如 &lt;a href=&#34;https://code.visualstudio.com/docs/remote/remote-overview&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;VSCode&lt;/a&gt; 或 &lt;a href=&#34;https://www.jetbrains.com/guide/remote/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;JetBrains&lt;/a&gt; 的方案），可能需要額外的設定。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
