はじめに
Goの有名なフレームワークの一つであるGinを触ってみたいと思い、dockerで環境構築してみました。
Dockerでの環境構築
1.Ginのインストール
まず、Dockerfile
を記述します。
FROM golang:latest
WORKDIR /code
docker-compose.yml
を記述します。
docker-compose.yml
services:
server:
build: .
container_name: gintest
tty: true
volumes:
- .:/code/
ports:
- 8080:8080
一度、go.mod
を作成するためにイメージを作成します。
docker compose build
ここから一旦コンテナを起動して、go.modを作成します。
docker compose run --rm server sh -c "go mod init gintest"
ginをインストールします。
docker compose run --rm server sh -c "go get github.com/gin-gonic/gin"
2.Ginが機能するか確認
Dockerfile
を書き直します
FROM golang:latest
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go mod tidy
RUN go build -o main .
CMD ["./main"]
main.go
を記述します。
このコードでは、アクセスできたら{"message": "Hello, Gin!"}
とjsonが表示されるようにしています。
main.go
package main
import (
"github.com/gin-gonic/gin"
)
func helloWorld(c *gin.Context) {
//リクエストが成功した場合に、JSONを返す
c.JSON(200, gin.H{
"message": "Hello, Gin!",
})
}
func main() {
//*gin.Engineをrに入れる
r := gin.Default()
//エンドポイントの指定
r.GET("/", helloWorld)
//サーバーを起動
r.Run()
}
*gin.Engineは、エンドポイントやミドルウェアを登録する際に使うそうです。
*gin.Contextは、リクエストやURLのパラメーターにアクセスする際に使う構造体です。
こちらの記事を参考になるかなと感じました。
ここまでできたら、下のコマンドでイメージの再作成とコンテナの立ち上げを行います。
docker compose up --build
にアクセスして、
Ginの環境構築ができました。
感想
今までDjangoをかじっていましたが、結構構築の仕方が違うなと感じるところが多く難しく感じました。
ただginEngineやginContextの理解が奥深いと感じたので、これから勉強してみようかなと感じました。