From f765a4b0ce22416db9f3b6bf9a7972e203a36b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=B4=E6=8B=89=E8=BF=AA=E7=BB=B4?= Date: Mon, 25 Apr 2022 17:59:46 +0800 Subject: [PATCH] =?UTF-8?q?Docker=20=E9=95=9C=E5=83=8F=E5=88=B6=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker_repostats.ini | 19 +++++++++++ docker/local_build.yml | 64 +++++++++++++++++++++++++++++++++++++ docker/repostats.Dockerfile | 20 ++++++++++++ docker/start_local_build.sh | 2 ++ docker/stop_local_build.sh | 2 ++ docker/vars.env | 7 +++- network/grafana_n.go | 3 -- repostats.go | 2 +- 8 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 docker/docker_repostats.ini create mode 100644 docker/local_build.yml create mode 100644 docker/repostats.Dockerfile create mode 100755 docker/start_local_build.sh create mode 100755 docker/stop_local_build.sh diff --git a/docker/docker_repostats.ini b/docker/docker_repostats.ini new file mode 100644 index 0000000..e58404f --- /dev/null +++ b/docker/docker_repostats.ini @@ -0,0 +1,19 @@ +[repostats] +debug = false +admin_port = 9103 + + +[postgres] +host = postgresql +port = 5432 +user = postgres +password = DePmoG_123 +database = repostats +max_open_conn = 20 +max_idle_conn = 5 + +[grafana] +host = grafana +port = 3000 +user = admin +password = admin \ No newline at end of file diff --git a/docker/local_build.yml b/docker/local_build.yml new file mode 100644 index 0000000..0064219 --- /dev/null +++ b/docker/local_build.yml @@ -0,0 +1,64 @@ +version: '3' +services: + + repostats: + image: baratsemet/repostats-app:${REPOSTATS_VERSION} + container_name: ${REPOSTATS_CONTAINER_NAME} + hostname: repostats + build: + context: ../ + dockerfile: docker/repostats.Dockerfile + volumes: + - ../docker/docker_repostats.ini:/app/repostats.ini + ports: + - ${REPOSTATS_LOCAL_PORT}:9103 + networks: + - network_repostats + depends_on: + postgres: + condition: service_healthy + + postgres: + image: postgres:${PG_VERSION} + container_name: ${PG_CONTAINER_NAME} + hostname: postgresql + environment: + - POSTGRES_USER=${PG_SUPER_USER} + - POSTGRES_PASSWORD=${PG_SUPER_PWD} + - TZ=PRC + - PGTZ=PRC + volumes: + - ../sql/db.sql:/docker-entrypoint-initdb.d/001.sql + - ../sql/gitee.sql:/docker-entrypoint-initdb.d/002.sql + - ../sql/roles.sql:/docker-entrypoint-initdb.d/003.sql + - ../docker/container-data/postgresql:/var/lib/postgresql/data + ports: + - ${PG_LOCAL_PORT}:5432 + healthcheck: + test: [ "CMD", "psql", "-U","${PG_SUPER_USER}","-d","repostats" ] + timeout: 10s + interval: 3s + retries: 10 + networks: + - network_repostats + + grafana: + image: grafana/grafana-oss:${GR_VERSION} + container_name: ${GR_CONTAINER_NAME} + hostname: grafana + volumes: + - ../docker/container-data/grafana:/var/lib/grafana + ports: + - ${GR_LOCAL_PORT}:3000 + networks: + - network_repostats + depends_on: + postgres: + condition: service_healthy + +networks: + network_repostats: + driver: bridge + name: "network_repostats" + driver_opts: + com.docker.network.enable_ipv6: "true" \ No newline at end of file diff --git a/docker/repostats.Dockerfile b/docker/repostats.Dockerfile new file mode 100644 index 0000000..9531175 --- /dev/null +++ b/docker/repostats.Dockerfile @@ -0,0 +1,20 @@ +## +## Build +## +FROM golang:1.16-alpine AS repostats_builder +ENV GO111MODULE=on +ENV GOPROXY=https://proxy.golang.com.cn,direct +ADD . /app +WORKDIR /app +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o repostats + +## +## Deploy +## +FROM alpine:latest +RUN apk add -U tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && apk del tzdata +WORKDIR /app +COPY --from=repostats_builder /app/repostats . +EXPOSE 9103 +ENTRYPOINT ["/app/repostats","repostats.ini"] + diff --git a/docker/start_local_build.sh b/docker/start_local_build.sh new file mode 100755 index 0000000..dab4f5b --- /dev/null +++ b/docker/start_local_build.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker-compose -p repostats -f local_build.yml --env-file vars.env up -d --build --force-recreate \ No newline at end of file diff --git a/docker/stop_local_build.sh b/docker/stop_local_build.sh new file mode 100755 index 0000000..6ad8279 --- /dev/null +++ b/docker/stop_local_build.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker-compose -p repostats -f local_build.yml --env-file vars.env down \ No newline at end of file diff --git a/docker/vars.env b/docker/vars.env index d6c2625..c796a0e 100644 --- a/docker/vars.env +++ b/docker/vars.env @@ -10,4 +10,9 @@ PG_SUPER_PWD=DePmoG_123 # Grafana Vars GR_VERSION=8.5.0 GR_CONTAINER_NAME=repostats_gr -GR_LOCAL_PORT=13000 \ No newline at end of file +GR_LOCAL_PORT=13000 + +# RepoStats Vars +REPOSTATS_VERSION=1.0 +REPOSTATS_LOCAL_PORT=9103 +REPOSTATS_CONTAINER_NAME=repostats_app \ No newline at end of file diff --git a/network/grafana_n.go b/network/grafana_n.go index 69be8ec..5990304 100644 --- a/network/grafana_n.go +++ b/network/grafana_n.go @@ -14,7 +14,6 @@ import ( "encoding/json" "fmt" "html/template" - "log" "net/http" gitee_model "repostats/model/gitee" "repostats/utils" @@ -254,8 +253,6 @@ func CreateGiteeHomeDashboard(token GrafanaToken, folder GrafanaFolder, datasour return err } - log.Println(tp.String()) - code, rs, err := HttpPost(token.Key, fmt.Sprintf("http://%s:%s/api/dashboards/db", token.Host, token.Port), nil, tp.String()) if err != nil { return err diff --git a/repostats.go b/repostats.go index c696b04..af96ace 100644 --- a/repostats.go +++ b/repostats.go @@ -57,7 +57,7 @@ func main() { initRouter(router) log.Println(fmt.Sprintf("[RepoStats v%s build:%s] starts at http://localhost:%d", utils.Version, utils.Build, utils.RepoStatsConfig.AdminPort)) - router.Run(fmt.Sprintf("localhost:%d", utils.RepoStatsConfig.AdminPort)) + router.Run(fmt.Sprintf(":%d", utils.RepoStatsConfig.AdminPort)) } func initRouter(router *gin.Engine) {