Help us understand the problem. What is going on with this article?

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でアクセスしてみて動作確認する
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away