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でアクセスしてみて動作確認する