Air: Live reload on Golang applications

brenoalves

Breno Alves

Posted on February 19, 2022

Air: Live reload on Golang applications

Go is a programming language with advanced features and clean syntax. It has a robust and well-documented common library, and has focus on good software engineering and principles.

Although Go is a great language, there's one downside: it needs to be recompiled every time after a single line change.

So, to make our lives easier in this post we're gonna learn how to use Air as our live reload.


App

Init with Go mod

go mod init helloworld

Creating App Go file

package main

import (
    "fmt"
    "net/http"
)

func main() {
    port := 3000
    fmt.Println("Starting Server on port", port)

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, World"))
    })
    http.ListenAndServe(":3000", nil)
}
Enter fullscreen mode Exit fullscreen mode

Air:

Installing Air.

go get -u github.com/cosmtrek/air

Air configuration file

air init

Starting Air.

air

You'll have the following result:

Air running

Now after any file change Air will reload your app automatically.

Air reloading


Air and Docker

First we need to create a Dockerfile

# Dockerfile

FROM cosmtrek/air

RUN mkdir -p /app/dist
COPY ./ /app/
WORKDIR /app/

RUN go get -d -v ./...
RUN go install -v ./...

CMD ["air"]
Enter fullscreen mode Exit fullscreen mode

Now we need to create a docker-compose to make our life easier

# docker-compose.yml

version: '3.7'
services:
  app:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - ./:/app/
Enter fullscreen mode Exit fullscreen mode

Now you just need to run docker-compose up

And you'll have the following result:

Air in docker container

References:

💖 💪 🙅 🚩
brenoalves
Breno Alves

Posted on February 19, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related