在 windows -- Docker -- vscode 中有提到使用 docker & vscode 的開發流程,因此本篇文章會將 hexo blog 也轉換成 container 的形式,方便本機的環境管理和專案的可攜帶性。
結果
- 專案從 github 拉下來:
git clone ....
- vscode 彈出可以開啟 container,點選 reopen in container
- nodejs 和 hexo 的開發環境被建立起來了,可以開始寫 blog 了。
3 步驟建立好開發環境,不用裝 nodejs、不用裝 hexo-cli、不用下 npm install,只要將專案 pull 下來並透過 vscode 開啟就可以直接開發。
加入 .devcontainer
有兩種辦法:
- 用 vscode 的 control panel –>
add development con....
先選擇最接近的模板(ex: hexo 就是選擇 node),然後再用模板修改成需要的 dockerfile 和 devcontainer.json。 - 用現有的 .devcontainer,其實和第一點差不多,但用久了之後複製在修改我覺得比較快。
以下是我的 Dockerfile & devcontainer.json
1 | # Dockerfile |
1 | // devcontainer.json |
這樣就完成了,只需要加入這兩個檔案 vscode 就可以用 container 的方式開啟專案了 ヽ(●´∀`●)ノ 。
問題
使用 docker 寫 blog 有一段時間了,有碰到一些問題,以下做個紀錄
使用 hexo s 指令不會即時更新
我的解法是將專案放到 wsl2 中執行,準確的說是放在基於 wsl2 的 ubuntu20.0
中,原因是:
- 單純使用上述的方法會發現 hexo 相關的指令執行速度都很緩慢。
hexo s
的 server 不會同步更新更改的部分
因此讓我想到官方文件中有提到上述的 devcontainer 會使用 mount 將 windows 本地的資料接到 container 中,這時因為 linux & windows 的檔案結構差異會導致 I/O 效能十分糟糕。( 官方文件 )
Hexo Server does not update the content after page refresh #4571
文中有提到一些解法,但我認為有些本末倒置,但也可以參考看看。