プログラミング

【Go言語】echo開発環境構築

概要

本記事ではGo言語のバックエンドフレームワークechoを利用した際の開発環境を構築します。
主なゴールは以下の通り

  • ソースを修正する度に都度アプリが更新されるホットリロードでの起動
  • Dockerを用いた環境構築

その前に以下記事を参考にgoenvを利用した環境環境を構築しておくのをお勧めします。(最低でも、go言語がお使いのPCにインストール済みの前提となります)

また以下記事を参考にDocker Desktopをダウンロードしておきましょう!

これからechoフレームワークを使っていきたい方にぜひ参考にしていただければと思います。

Goプロジェクトの作成

echoドキュメントを参考にまずはgoプロジェクトを作成していきましょう!

まず以下コマンドを実行します。
今回myappという名前でプロジェクトを作成していますが、任意の名前で作成頂いて問題ございません。

mkdir myapp && cd myapp
go mod init myapp
go get github.com/labstack/echo/v4

上記、何をやっているかというと

  • goプロジェクトの為のディレクトリ作成
  • goプロジェクトを初期化
  • echoパッケージのダウンロード

といったことをしています。
では作成したプロジェクトをVSCodeで開いてみましょう!

上記go.modとgo.sumが作成されていることを確認して、次に進みます!

ポイント

ちなみにShift+control+@でVSCodeでターミナルを開くことができます!地味に便利なので覚えておきましょう!

プロジェクトソースを実装

echoドキュメントに倣って、Hello, World!を返す以下server.goを作成します。

package main

import (
	"net/http"
	
	"github.com/labstack/echo/v4"
)

func main() {
	e := echo.New()
	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})
	e.Logger.Fatal(e.Start(":1323"))
}

dokcerファイルを実装

今回開発用のechoサーバのコンテナイメージを作成する、dockreファイルを作成します。
ファイル名はapi.dockerfileとしておきます。

このairパッケージがgoをホットリロードするパッケージになります。

FROM golang:1.23.2
WORKDIR /app

# airパッケージをダウンロード
RUN go install github.com/air-verse/air@latest

CMD ["air"]

今回golangのバージョンは1.23.2に設定してますが、go versionコマンドでお使いバージョンを確認し、設定してください

airの設定ファイルを作成

airを実行する為の設定ファイル.air.tomlを作成します。

root = "."
testdata_dir = "testdata"
tmp_dir = "tmp"

[build]
  args_bin = []
  bin = "main"
  cmd = "go build -o ./main ."
  delay = 1000
  exclude_dir = ["assets", "tmp", "vendor", "testdata"]
  exclude_file = []
  exclude_regex = ["_test.go"]
  exclude_unchanged = false
  follow_symlink = false
  full_bin = ""
  include_dir = []
  include_ext = ["go", "tpl", "tmpl", "html"]
  include_file = []
  kill_delay = "0s"
  log = "build-errors.log"
  poll = false
  poll_interval = 0
  post_cmd = []
  pre_cmd = []
  rerun = false
  rerun_delay = 500
  send_interrupt = false
  stop_on_error = false

[color]
  app = ""
  build = "yellow"
  main = "magenta"
  runner = "green"
  watcher = "cyan"

[log]
  main_only = false
  time = false

[misc]
  clean_on_exit = false

[screen]
  clear_on_rebuild = false
  keep_scroll = true

compose.yamlファイルを実装

2で作成したイメージを起動するcompose.yamlを作成します。

services:
  api:
    container_name: myapp
    build:
      context: ./
      dockerfile: api.dockerfile
    volumes:
      - type: bind
        source: './'
        target: '/app'
    ports:
      - 1323:1323
    restart: always

ディレクトリの中身が以下の通りになってるはずです。

動かしてみよう!

以下コマンドを実行して、起動してみましょう!

docker compose up -d

dockerコマンドを実行するにはDocker Desktopを起動しておきましょう!

処理が完了したら、以下URLをブラウザで開いてみましょう!

http://localhost:1323/

次にホットリロードができているか確認してみましょう!server.goのHello, World!の文字列を任意の文字列に変更し、ファイルを保存して再度上記URLにアクセスしてみましょう!

こんな表示になればホットリロードでのecho開発環境の構築は完了です!
さあバックエンドアプリを開発する環境が整いました!

スポンサーリンク

  • この記事を書いた人

かず

バックエンド/フロントエンド/クラウドインフラのフルスタックエンジニア | デジタルノマド(‘23/6〜) で世界放浪中 | 主にプログラミングに役立つ情報を発信 | Xでは旅の様子を発信

-プログラミング
-, ,