はじめに
Goのnet/httpを使ったAPIプロジェクトを開発しています。デバッグの際、都度ビルドし直すのが面倒なので、いい感じにホットリロードできるというAirを導入したくなりました。
開発環境
- Windows10
- VSCode
調べてみた
Docker-composeを使った事例 (参考参照)が多く出てきました。ただ、docker-composeで実行するのは若干面倒なので、それ以外の方法は無いのかと探してみることにしました。
見つけた いい感じの方法
- Devcontainerに airをインストールして、DevContainer上で実行する。
- Windows10でdocker-composeで実行するとAirでファイル変更が検知されない? 場合があると知り合いに聞いたが特に問題なく上手くいった。(筆者環境では)
方法
- リポジトリ直下に
.devcontainer
フォルダ作成 - .devcontainerフォルダ内に 下記内容のdevcontainer.json を作成
{
"name": "Go",
"image": "mcr.microsoft.com/devcontainers/go:0-1-bullseye",
"features": {
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
"moby": true,
"installDockerBuildx": true,
"version": "latest",
"dockerDashComposeVersion": "v2"
}
},
"postCreateCommand": "go install github.com/cosmtrek/air@latest"
}
- 保存し、プロジェクトを再度開き直す
- DevContainerを開くかどうかVSCodeに確認されるので、DevContainerとして開き直す
- インストール完了後 プロンプト上で
air
と打って Airを立ち上げる - 以後 コードの変更に応じて ホットリロードが行われる
できた感想
- Windowsで導入するのめんどくさそうと思っていたけれど、かなりあっさり導入できた...
参考
- https://qiita.com/abemaru/items/b322e606343ffd99af9c
- https://github.com/cosmtrek/air
-
https://github.com/cosmtrek/air/issues/274
- WSL領域にリポジトリをまるごと配置し、その中で実行することでもファイルの変更が検知できるらしい