Breno Alves
Posted on February 19, 2022
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)
}
Air:
Installing Air.
go get -u github.com/cosmtrek/air
Air configuration file
air init
Starting Air.
air
You'll have the following result:
Now after any file change Air will reload your app automatically.
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"]
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/
Now you just need to run docker-compose up
And you'll have the following result:
References:
- Air: https://github.com/cosmtrek/air
- Golang-book: https://www.golang-book.com/books/intro/1
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
November 10, 2024