Edited at

Goで書いたサーバーをArukasで動作させるまでのステップ

More than 1 year has passed since last update.


GoでHTTPサーバーを用意する


シンプルなHTTPサーバーを用意する

package main

import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world\n")
}

func main() {
fmt.Println("Starting server")
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}


Dockerfileを用意する

FROM golang:latest as builder

ENV CGO_ENABLED=0
ENV GOOS=linux
ENV GOARCH=amd64
WORKDIR /go/src/github.com/yokoe/go-server-example
COPY . .
RUN go build main.go

# runtime image
FROM alpine
RUN apk add --no-cache ca-certificates
COPY --from=builder /go/src/github.com/yokoe/go-server-example /app
RUN ls /app
EXPOSE 8080
CMD /app/main


ビルドしてみて動作確認する

docker build -t go-server-example .

docker run -p 8080:8080 -t go-server-example

curlでAPIを叩いてみて、ちゃんとレスポンスが帰って来ればOK

curl http://localhost:8080/


Dockerhubにデプロイする


DockerでSign Inする

Docker.app(macOS)の場合はメニューからSign Inできる。


イメージをPushする

docker images

docker imagesで、ビルドしたイメージのImage IDを調べる。

docker tag 3da5154 yokoe/go-server-example:latest

docker push yokoe/go-server-example:latest

そのImage IDに対してlatestタグをつけてPushする。


Arukasにデプロイする


  • Arukasにログインして、「新しいアプリケーションを作成」を選ぶ

  • ImageにDockerhubのレポジトリのイメージ名を指定する

  • 公開レポジトリの場合はFreeプランで運用できる

  • 「アプリケーションを作成」する

  • Action欄で「起動」をするとインスタンスが立ち上がる

  • curlでアクセスしてみて動作確認する