HTMLとかコード修正したときに手動で再起動するのが面倒なので、ホットリロードツールを導入してみた。
$ go install github.com/cosmtrek/air@latest
$ air init
$ air
__ _ ___
/ /\ | | | |_)
/_/--\ |_| |_| \_ , built with Go
mkdir /home/umemak/workspace/eventsite_go/tmp
watching .
watching cmd
watching cmd/eventsite
watching db
watching db/sql
watching model
watching model/user
!exclude tmp
watching web
watching web/template
building...
no Go files in /home/umemak/workspace/eventsite_go
failed to build, error: exit status 1
^Ccleaning...
see you again~
デフォルトだと、cmdの下のmain.goを見つけてくれない?
air init
で作成された.air.toml
を編集して、cmd = "go build -o ./tmp/main ."
をcmd = "go build -o ./tmp/main ./cmd/eventsite/"
にしたら動いた。
これで開発効率上がるはず。
ビルドファイルとビルドログがtmpに出力されるので、.gitignore
にtmp/
を追加した。
DockerコンテナでgolangをホットリロードするAirを導入を参考に、Dockerでもいけるようにしてみた。
Dockerfileはgo getではなくgo installでも大丈夫だった。 gitのインストール不要。
FROM golang:1-alpine
RUN go install github.com/cosmtrek/air@latest
WORKDIR /app
CMD ["air"]