こんにちは、KOUKIです。
前回は、Docker環境上にMySQLコンテナを追加し、マイグレーション機能を実装しました。
Docker環境を用いれば、簡単にDBなどを用意することができるので、大変便利です。
しかし、Go言語はコンパイル型の言語なので、ソースコードの変更を反映するには、いちいちdocker コンテナを立ち上げ直さなければならないため、不便な面もあります。
本記事では、その不便さを「cosmtrek/air」というGoのツールを使って改善したいと思います。
これを使うと、Goファイルを保存するだけで、勝手にコンパイルしてくれるようになるので、コンテナを立ち上げ直す必要がなくなります。
尚、Udemyの「React, NextJS and Golang: A Rapid Guide – Advanced」コースを参考にしています。解釈は私が勝手に付けているので、本物をみたい場合は受講をお勧めします!
<目次>
前回
Dockerfile
cosmtrek/airをDocker上にインストールします。そのため、Dockerfileを編集しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
FROM golang:1.16 WORKDIR /app # go mod init xxx でgo.modファイルを作成しておくこと COPY go.mod . COPY go.sum . # go modからパッケージをダウンロード RUN go mod download # /app にすべてのコードをコピー COPY . . # Live Reloading RUN curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin # エントリポイント(air) CMD ["air"] |
GitHubのREADME.mdによるとLive Reloadingするためには、airコマンドを実行する必要があるようなので、CMDに「air」を指定しました。
build
Dockerfileの修正を反映させるために、ビルドします。
1 |
docker-compose up --build |
このコマンドは、Dockerfileをビルド後、コンテナも立ち上げてくれるので、Live Reloadingの動作も確認してみましょう。
main.goファイルを以下のように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main ... func main() { ... app.Get("/", func(c *fiber.Ctx) error { return c.SendString("My Name Is Self Note") // 修正 // return c.SendString("Hello, World 👋!") }) app.Listen(":3000") } |
ファイルを保存すると勝手にコンパイルが走るので、コンテナを立ち上げ直さずに変更内容が反映されるはずです。

成功ですね。
ちなみに、今回は、Macで動作確認しましたが、Windowsでも動くようです。PRに検証結果がありました。
次回
次回は、Admin APIの実装に着手します。ユーザーの登録とログイン処理を実装していきましょう。
コメントを残す
コメントを投稿するにはログインしてください。