diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..004b73a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +name: build on tag + +on: + push: + branches: [ web ] + pull_request: + branches: [ web ] + +jobs: + docker: + runs-on: ubuntu-latest + name: Build + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + - name: Set output + id: vars + run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + push: true + tags: ${{ secrets.DOCKER_HUB_USERNAME }}/go- + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d7baa6a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ + +FROM golang:1.17-alpine as builder + +ADD ./ /go-charts + +RUN apk update \ + && apk add docker git gcc make \ + && cd /go-charts \ + && make build + +FROM alpine + +EXPOSE 7001 + +COPY --from=builder /go-charts/go-charts /usr/local/bin/go-charts +COPY --from=builder /go-charts/entrypoint.sh /entrypoint.sh + + +CMD ["go-charts"] + +ENTRYPOINT ["/entrypoint.sh"] + +HEALTHCHECK --timeout=10s --interval=10s CMD [ "wget", "http://127.0.0.1:7001/ping", "-q", "-O", "-"] \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..22af142 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +export GO111MODULE = on + +.PHONY: default test test-cover dev build + +build: + go build -tags netgo -o go-charts + +release: + go mod tidy diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..ad8111b --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +if [ "${1:0:1}" = '-' ]; then + set -- go-charts "$@" +fi + +exec "$@" \ No newline at end of file diff --git a/go.mod b/go.mod index 97efd89..8138b37 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.17 require ( github.com/vicanso/elton v1.8.1 - github.com/vicanso/go-charts v0.0.2-0.20211225121531-18af884865f4 + github.com/vicanso/go-charts v0.0.2-0.20211226014821-6d53559d49cf ) require ( diff --git a/go.sum b/go.sum index c4dc551..8c48ab3 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/vicanso/elton v1.8.1 h1:axrPozxBaTn9qqCJJ+aSGK+/Y8oLuEm0uXM5wm/glIs= github.com/vicanso/elton v1.8.1/go.mod h1:BWQknlDpKtw2L5oer3mtBJo/vpBUYUHAjZL3yFV1+ak= -github.com/vicanso/go-charts v0.0.2-0.20211225121531-18af884865f4 h1:wNuYxF/3fHIyokCxymsCwKWXjMgGC3wm2CH9rI407uA= -github.com/vicanso/go-charts v0.0.2-0.20211225121531-18af884865f4/go.mod h1:Kylthw+IZk7hDvhrj4CTN+DAsLzG01y91FOOElGv7vk= +github.com/vicanso/go-charts v0.0.2-0.20211226014821-6d53559d49cf h1:4+ykVNLlgrXTENY0HkKEQsWUppWeKi9dtSAG0uZKgTU= +github.com/vicanso/go-charts v0.0.2-0.20211226014821-6d53559d49cf/go.mod h1:Kylthw+IZk7hDvhrj4CTN+DAsLzG01y91FOOElGv7vk= github.com/vicanso/hes v0.4.1 h1:lq27wDXAljoROtYbFDTL5gY51SdeY+9L0ohEiRadwTU= github.com/vicanso/hes v0.4.1/go.mod h1:B0l1NIQM/nYw7owAd+hyHuNnAD8Nsx0T6duhVxmXUBY= github.com/vicanso/intranet-ip v0.0.1 h1:cYS+mExFsKqewWSuHtFwAqw/CO66GsheB/P1BPmSTx0= diff --git a/main.go b/main.go index 1078c02..22eb584 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "bytes" "embed" + "fmt" "time" "github.com/vicanso/elton" @@ -16,6 +17,12 @@ var webFS embed.FS func main() { e := elton.New() + e.Use(middleware.NewLogger(middleware.LoggerConfig{ + Format: middleware.LoggerCombined, + OnLog: func(s string, _ *elton.Context) { + fmt.Println(s) + }, + })) e.Use(middleware.NewDefaultError()) e.Use(middleware.NewDefaultBodyParser()) @@ -28,6 +35,11 @@ func main() { EnableStrongETag: true, })) + e.GET("/ping", func(c *elton.Context) error { + c.BodyBuffer = bytes.NewBufferString("pong") + return nil + }) + e.GET("/", func(c *elton.Context) error { buf, err := webFS.ReadFile("web/index.html") if err != nil { @@ -46,7 +58,7 @@ func main() { return nil }) - err := e.ListenAndServe(":3000") + err := e.ListenAndServe(":7001") if err != nil { panic(err) }