golang+gin+dockerでAPI開発①

プログラミング

明けましておめでとうございます。

ものレボの古澤です。

本年もよろしくお願いします。

さて、今回のお題ですが、golang+ginでAPIを作っていこうと思います。

新年になったので、気持ちを新たに新しい技術に触れることを目的として、とりあえず触ってみたいと思います。

今回はまず環境構築を行います。

構築する環境のディレクトリ構成は以下になります。

.
├── app
│   ├── go.mod
│   ├── go.sum
│   └── main.go <- サーバー本体
├── docker-compose.yml
└── infra
    └── Dockerfile

手順は以下になります。

  • 1. golang+dockerの環境を構築
  • 2. ginをインストール
  • 3. Hello World

1. golang+dockerの環境を構築

Dockerfileを準備

# とりあえずgolangのバージョンは最新を使用
FROM golang:latest
# アップデートとgitのインストール
RUN apt-get update && apt-get install -y git
WORKDIR /go/src

続いてdocker-compose.ymlを準備

version: "3"
services: 
  app:
    container_name: go-test
    build:
      context: .
      dockerfile: ./infra/Dockerfile
    tty: true
    volumes:
      - ./app:/go/src
    env_file:
      - ./.go_env
    ports:
      - 3001:3001

最後に.go_envを準備。今回はPATHの定義だけ。

GOPATH=/go

後はbuildしてupするだけで、golangの環境構築は完了です。

2. ginをインストール

まずは、1で作成した環境を立ち上げ、アタッチします。

以下のコマンドを実行。

# go mod init go-test
# go get -u github.com/gin-gonic/gin

3. Hello World

サーバーの確認用ファイルを用意します。

package main 

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

func main() {
    router := gin.Default()

    router.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello World",
        })
    })

    router.Run(":3001")
}

docker にアタッチして、go run main.go を実行すると、サーバーが起動します。

ブラウザで http://localhost:3001 にアクセすると、{“message":"Hello World"} が表示されます。

表示できれば完了です。

最後に

以上、golang+gin+dockerの環境構築でした。次回は、ちょっとしたAPIを作ってみたいと思います。

MonoRevoに興味が多少でも出た方、ご連絡ください。

MonoRevoジョブボード

Facebook

プログラミングgin,golang

Posted by FurusawaYasushi