【Go】サードパッケージを使用したアプリケーションをHerokuにデプロイする v2

概要

以前書いた記事がGoのアップデートと共にゴミ記事と化したので別アプローチを記録

サードパッケージを使用したGoのアプリケーションをHerokuにデプロイする

結論から言うとgovendorをやめて、go modulesを使用する

Goでアプリケーションを作成

Goアプリケーションの作り方は前回の作り方とほぼ同じ

package main

import (
	"github.com/gin-gonic/gin"
)

type User struct {
	Name string
	Age  int
}

func main() {
	router := gin.Default()
	// css、js などの静的ファイルを読み込む場合。今回は使用しない。
	// router.Static("/assets", "./assets")

	router.LoadHTMLGlob("templates/*.html")

	router.GET("/", handler)

	router.Run()
}

func handler(ctx *gin.Context) {

	user := User{"User", 20}

	ctx.HTML(200, "index.html", gin.H{
		"user": user,
	})
}
<!DOCTYPE html>
<html>
    <div>
        <p>Name: {{.user.Name}} </p>
        <p>Name: {{.user.Age}} </p>
    </div>
</html>

go modulesを使用してサードパッケージを追加

go modulesはGo 1.11が入っている場合は入っているそうですが、ない場合はinstallする

下記のサイトが参考になりました! Go言語の依存モジュール管理ツール Modules の使い方

// 初期化
$ go mod init
go: creating new go.mod: module Heroku

go mod initが完了するとgo.modファイルが作成されます。

module Heroku

go 1.13

初期化が完了したら、依存ファイルのダウンロードを行います。

// 依存ファイルをダウンロード
$ go get -v
Heroku

go.modファイルが更新され、新たにgo.sumファイルが作成されます。

module Heroku

go 1.13

require github.com/gin-gonic/gin v1.5.0

github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
〜〜以下、依存ファイルがたくさん〜〜〜〜〜〜〜〜

作成したgo modluesをpushする

$ git add -A .
$ git commit -m "init"
[master 81579d9] init
 2 files changed, 44 insertions(+)
 create mode 100644 go.mod
 create mode 100644 go.sum

Herokuのアプリを作成→デプロイ 作成手順は以前のものと変わりません。

$ heroku create
Creating app... done, ⬢ pure-harbor-40656
https://pure-harbor-40656.herokuapp.com/ | https://git.heroku.com/pure-harbor-40656.git
$ git push heroku master

でけた

所感

今回の対応はGoと使用しているサードパッケージのアップデートによる影響でした。(詳細は下記記事) govendorで依存関係のファイルが取得できないエラーについて

今回のケースから 技術者は変わっていく技術にちゃんとキャッチアップしていかなきゃ行けない。 調べる時の単語のチョイス、範囲、絞り方がとても重要だなと感じました。

後、英語はちゃんと勉強しようね

参考サイト

Go言語の依存モジュール管理ツール Modules の使い方 サードパッケージを使用したGoのアプリケーションをHerokuにデプロイする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA