x64.moe

DockerとGolangでAPIサーバを立てる

March 26, 2020

サンプルはここ。 まずはGoで簡単なAPIサーバを立てる。 今回はサクッとAPIサーバを作れるechoを使う。 まずはメインのサーバ。

package main

import (
	"godocker/api"
	"net/http"

	"github.com/labstack/echo"
)

func main() {
	e := echo.New()
	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, world")
	})

	e.GET("/api", func(c echo.Context) error {
		return c.String(http.StatusOK, api.GetApi())
	})

	e.Logger.Fatal(e.Start(":1323"))
}

同じパッケージでAPIを書くのは避けたい。 そういう訳でAPIの部分はディレクトリを分けて作る。

package api

func GetApi() string {
	return "GetApi"
}

このAPIサーバをDockerコンテナにする。 とりあえずDockerfile

FROM golang:latest

WORKDIR /go/src/godocker

COPY . .

RUN go get -d -v ./...
RUN go install -v ./...

CMD ["godocker"]

ビルドしてコンテナを走らせてみる。

$ docker build -t echo .
$ docker run --rm -p 127.0.0.1:1323:1323 --name echo echo

実行できているか確認

$ curl 127.0.0.1:1323
$ curl 127.0.0.1:1323/api

“Hello, world”と”GetApi”が帰ってきたら成功。 あとは同じ要領でAPI生やそう。


FAMASoon

Written by FAMASoon. Twitter/GitHub