🥽

【Hello World⑮】echo @ Go

2024/04/17に公開

echoでGoのWebアプリを作ります

Windows11のDocker環境上で
Go言語のechoを使い、Hello Worldアプリを作ります。

環境

Windows 11 Pro 23H2
WLS 2.1.5.0(Ubuntu 22.04.1 LTS)
Docker Desktop 4.28.0
Visual Studio Code

①フォルダ・ファイルを作成

以下の構成でフォルダとファイルを作ります。

フォルダ構成
go
 ├─app
 │  └─main.go
 └─compose.yaml   # コンテナ作成時の指示を記載したファイル
PowerShell
mkdir go              ;`
cd go                 ;`
mkdir app             ;`
New-Item compose.yaml ;`
New-Item app/main.go  ;`
code compose.yaml     ;`
code app/main.go
compose.yaml
services:
  api:
    image          : golang:1.22-bullseye
    container_name : go
    working_dir    : /app
    command        : bash -c "go mod tidy && go run main.go"
    ports:
      - "1323:1323"
    volumes:
      - ./app:/app
main.go
package main
import (
  "github.com/labstack/echo/v4"
  "github.com/labstack/echo/v4/middleware"
  "net/http"
)
func main() {
  // Echo instance
  e := echo.New()

  // Middleware
  e.Use(middleware.Logger())
  e.Use(middleware.Recover())

  // Routes
  e.GET("/", hello)

  // Start server
  e.Logger.Fatal(e.Start(":1323"))
}
// Handler
func hello(c echo.Context) error {
  return c.String(http.StatusOK, "Hello World echo @ Go on Docker!")
}

②プロジェクトを作成

以下のコマンドを実行し、プロジェクトを作成します。
※Dockerのイメージ内でプロジェクトの作成と、echoのインストールを行い、作成されたgo.modgo.sumをホストにコピーします。

PowerShell
docker run -it --rm -v .:/host golang:1.22-bullseye `
bash -c "mkdir /app && `
         cd /app && `
         go mod init sample && `
         go get github.com/labstack/echo/v4 && `
         cp /app/* /host/app/"
作成されるフォルダ・ファイルの構成と「go.mod」の内容
フォルダ構成
go
 ├─app
 │  ├─go.mod
 │  ├─go.sum
 │  └─main.go
 └─compose.yaml   # コンテナ作成時の指示を記載したファイル
go.mod
module sample

go 1.22.2

require github.com/labstack/echo/v4 v4.11.4

require (
	github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
	github.com/labstack/gommon v0.4.2 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.20 // indirect
	github.com/valyala/bytebufferpool v1.0.0 // indirect
	github.com/valyala/fasttemplate v1.2.2 // indirect
	golang.org/x/crypto v0.17.0 // indirect
	golang.org/x/net v0.19.0 // indirect
	golang.org/x/sys v0.15.0 // indirect
	golang.org/x/text v0.14.0 // indirect
	golang.org/x/time v0.5.0 // indirect
)

③コンテナを起動

以下のコマンドを実行し、Dockerのイメージを作成してコンテナを起動します。

PowerShell
docker compose up -d

④Hello Worldが表示されることを確認

http://localhost:1323に接続して、Hello Worldが表示されることを確認します。

Discussion