In this tutorial you will learn how to deploy a containerized Go Fiber application to Fly.
The final code of this article can be found here.
Prerequisites
- A Fly account
- A computer with Go, Docker, and Flyctl (the Fly CLI)
Creating the application
go mod init hello-world
go get github.com/gofiber/fiber/v2
./src/application.go
package main
import (
"github.com/gofiber/fiber/v2"
"log"
"math/rand"
"strconv"
)
const port = 8080
func main() {
application := fiber.New()
application.Get("/", func(c *fiber.Ctx) error {
return c.JSON(&fiber.Map{
"message": "Hello, World!",
})
})
application.Get("/random", func(c *fiber.Ctx) error {
return c.JSON(&fiber.Map{
"number": rand.Intn(10),
})
})
log.Fatalln(application.Listen(":" + strconv.Itoa(port)))
}
To run the application locally:
go run ./src/application.go
Containerizing the application
Dockerfile
FROM golang:1.18-alpine
WORKDIR /usr/src/app
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY ./src ./src
RUN go build -o ./bin/hello-world ./src
EXPOSE 8080
CMD [ "./bin/hello-world" ]
To build and run the container locally:
docker build . -t hello-world
docker run -dp 8080:8080 hello-world
Deploying the application
fly launch
to prepare yourfly.toml
file, containing your project settings. Inside thefly.toml
file, ensure the service'sinternal_port
(8080 by default) matches the port exposed by your container.fly deploy
to deploy your application.fly open
to open the deployed application in your browser.
Cleaning up
fly destroy your-unique-app-id -y
removes your application from the Fly platform.
That's all! Don't forget to delete the application once you're done testing.
The final code of this article can be found here.