This is an automated email from the ASF dual-hosted git repository.

juzhiyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 462b552  feat: add file server (#594)
462b552 is described below

commit 462b552bc5ddb182946ab48a638ab84bdc9ac888
Author: Vinci Xu <[email protected]>
AuthorDate: Sat Oct 24 11:23:35 2020 +0800

    feat: add file server (#594)
    
    * feat: add file server
    
    * dock: add descrition for file server
---
 api/Dockerfile        |  1 +
 api/conf/conf.go      | 26 +++++++++++++++-----------
 api/dist/.gitkeep     |  0
 api/go.mod            |  1 +
 api/go.sum            |  6 ++++++
 api/internal/route.go |  8 +++++++-
 api/log/log.go        |  2 +-
 api/main.go           |  1 -
 docs/deploy.md        |  4 ++--
 docs/deploy.zh-CN.md  |  5 ++---
 10 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/api/Dockerfile b/api/Dockerfile
index 1af2ba0..1c8574a 100644
--- a/api/Dockerfile
+++ b/api/Dockerfile
@@ -64,6 +64,7 @@ RUN  cd /go/manager-api/build-tools \
      && lua schema-sync.lua > /go/manager-api/schema.json \
      && cd /go/manager-api/ \
      && rm -rf /go/manager-api/build-tools/
+ADD ./dist /go/manager-api
 
 EXPOSE 8080
 
diff --git a/api/conf/conf.go b/api/conf/conf.go
index 328cddc..84c509f 100644
--- a/api/conf/conf.go
+++ b/api/conf/conf.go
@@ -28,14 +28,18 @@ import (
        "github.com/apisix/manager-api/internal/utils"
 )
 
-const ServerPort = 8080
-const PROD = "prod"
-const BETA = "beta"
-const DEV = "dev"
-const LOCAL = "local"
-const confPath = "/go/manager-api/conf.json"
-const schemaPath = "/go/manager-api/schema.json"
-const RequestId = "requestId"
+const (
+       ServerPort = 8080
+       WebDir     = "./dist"
+
+       EnvPROD  = "prod"
+       EnvBETA  = "beta"
+       EnvDEV   = "dev"
+       EnvLOCAL = "local"
+
+       confPath   = "/go/manager-api/conf.json"
+       schemaPath = "/go/manager-api/schema.json"
+)
 
 var (
        ENV        string
@@ -52,7 +56,7 @@ func init() {
 
 func setEnvironment() {
        if env := os.Getenv("ENV"); env == "" {
-               ENV = LOCAL
+               ENV = EnvLOCAL
        } else {
                ENV = env
        }
@@ -65,7 +69,7 @@ func setEnvironment() {
 }
 
 func configurationPath() string {
-       if ENV == LOCAL {
+       if ENV == EnvLOCAL {
                return filepath.Join(filepath.Dir(basePath), "conf.json")
        } else {
                return confPath
@@ -73,7 +77,7 @@ func configurationPath() string {
 }
 
 func getSchemaPath() string {
-       if ENV == LOCAL {
+       if ENV == EnvLOCAL {
                return filepath.Join(filepath.Dir(basePath), "schema.json")
        } else {
                return schemaPath
diff --git a/api/dist/.gitkeep b/api/dist/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/api/go.mod b/api/go.mod
index bcec2f1..3f41ce6 100644
--- a/api/go.mod
+++ b/api/go.mod
@@ -13,6 +13,7 @@ require (
        github.com/dgrijalva/jwt-go v3.2.0+incompatible
        github.com/gin-contrib/pprof v1.3.0
        github.com/gin-contrib/sessions v0.0.3
+       github.com/gin-contrib/static v0.0.0-20200916080430-d45d9a37d28e
        github.com/gin-gonic/gin v1.6.3
        github.com/gogo/protobuf v1.3.1 // indirect
        github.com/google/uuid v1.1.2 // indirect
diff --git a/api/go.sum b/api/go.sum
index 0fce5c9..37089e0 100644
--- a/api/go.sum
+++ b/api/go.sum
@@ -51,6 +51,7 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible 
h1:7qlOGliEKZXTDg6OTjfoBKDXWrumC
 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod 
h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod 
h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
 github.com/dustin/go-humanize v1.0.0/go.mod 
h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod 
h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
 github.com/envoyproxy/go-control-plane 
v0.9.1-0.20191026205805-5f8ba28d4473/go.mod 
h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod 
h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/fatih/color v1.7.0/go.mod 
h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
@@ -63,6 +64,8 @@ github.com/gin-contrib/sessions v0.0.3 
h1:PoBXki+44XdJdlgDqDrY5nDVe3Wk7wDV/UCOuL
 github.com/gin-contrib/sessions v0.0.3/go.mod 
h1:8C/J6cad3Il1mWYYgtw0w+hqasmpvy25mPkXdOgeB9I=
 github.com/gin-contrib/sse v0.1.0 
h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
 github.com/gin-contrib/sse v0.1.0/go.mod 
h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-contrib/static v0.0.0-20200916080430-d45d9a37d28e 
h1:8bZpGwoPxkaivQPrAbWl+7zjjUcbFUnYp7yQcx2r2N0=
+github.com/gin-contrib/static v0.0.0-20200916080430-d45d9a37d28e/go.mod 
h1:VhW/Ch/3FhimwZb8Oj+qJmdMmoB8r7lmJ5auRjm50oQ=
 github.com/gin-gonic/gin v1.5.0/go.mod 
h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do=
 github.com/gin-gonic/gin v1.6.2/go.mod 
h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
 github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
@@ -138,6 +141,7 @@ github.com/jonboulle/clockwork v0.1.0/go.mod 
h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22
 github.com/json-iterator/go v1.1.6/go.mod 
h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.7/go.mod 
h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/json-iterator/go v1.1.9/go.mod 
h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.10 
h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
 github.com/json-iterator/go v1.1.10/go.mod 
h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod 
h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod 
h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
@@ -174,8 +178,10 @@ github.com/mitchellh/mapstructure 
v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F
 github.com/mitchellh/mapstructure v1.1.2 
h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
 github.com/mitchellh/mapstructure v1.1.2/go.mod 
h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd 
h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod 
h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1 
h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
 github.com/modern-go/reflect2 v1.0.1/go.mod 
h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod 
h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/oklog/ulid v1.3.1/go.mod 
h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
diff --git a/api/internal/route.go b/api/internal/route.go
index 9814620..0304605 100644
--- a/api/internal/route.go
+++ b/api/internal/route.go
@@ -17,9 +17,11 @@
 package internal
 
 import (
+       "fmt"
        "github.com/gin-contrib/pprof"
        "github.com/gin-contrib/sessions"
        "github.com/gin-contrib/sessions/cookie"
+       "github.com/gin-contrib/static"
        "github.com/gin-gonic/gin"
 
        "github.com/apisix/manager-api/conf"
@@ -36,7 +38,7 @@ import (
 )
 
 func SetUpRouter() *gin.Engine {
-       if conf.ENV != conf.LOCAL && conf.ENV != conf.BETA {
+       if conf.ENV != conf.EnvLOCAL && conf.ENV != conf.EnvBETA {
                gin.SetMode(gin.DebugMode)
        } else {
                gin.SetMode(gin.ReleaseMode)
@@ -45,6 +47,10 @@ func SetUpRouter() *gin.Engine {
        store := cookie.NewStore([]byte("secret"))
        r.Use(sessions.Sessions("session", store))
        r.Use(filter.CORS(), filter.Authentication(), filter.RequestId(), 
filter.RecoverHandler())
+       r.Use(static.Serve("/", static.LocalFile(conf.WebDir, false)))
+       r.NoRoute(func(c *gin.Context) {
+               c.File(fmt.Sprintf("%s/index.html", conf.WebDir))
+       })
 
        factories := []handler.RegisterFactory{
                route.NewHandler,
diff --git a/api/log/log.go b/api/log/log.go
index ea34643..b9e6860 100644
--- a/api/log/log.go
+++ b/api/log/log.go
@@ -89,7 +89,7 @@ func GetLogger() *logrus.Entry {
                var log = logrus.New()
                setNull(log)
                log.SetLevel(logrus.DebugLevel)
-               if conf.ENV != conf.LOCAL {
+               if conf.ENV != conf.EnvLOCAL {
                        log.SetLevel(logrus.ErrorLevel)
                }
                log.SetFormatter(&logrus.JSONFormatter{})
diff --git a/api/main.go b/api/main.go
index 2975b34..2e24fd2 100644
--- a/api/main.go
+++ b/api/main.go
@@ -43,7 +43,6 @@ func main() {
        if err := store.InitStores(); err != nil {
                panic(err)
        }
-
        // routes
        r := internal.SetUpRouter()
        addr := fmt.Sprintf(":%d", conf.ServerPort)
diff --git a/docs/deploy.md b/docs/deploy.md
index 41deb47..53ebad1 100644
--- a/docs/deploy.md
+++ b/docs/deploy.md
@@ -83,5 +83,5 @@ $ yarn install
 $ yarn build
 ```
 
-5. The bundled files are under `/dist` folder if the step 4 is successful, 
then we recommend using `nginx` to handle those files, please install `nginx` 
manually, then refer to the nginx conf `compose/dashboard_conf/nginx.conf`.
-6. Move files under `dist` folder to nginx's default html folder, then visit 
`http://127.0.0.1` in your browser.
+5. The bundled files are under `/dist` folder if the step 4 is successful.
+6. Move files under `dist` folder to manager-api's `dist` folder, then visit 
`http://127.0.0.1:8080` in your browser, `8080` is the default listen port of 
manager-api.
diff --git a/docs/deploy.zh-CN.md b/docs/deploy.zh-CN.md
index ceeefc4..01c2159 100644
--- a/docs/deploy.zh-CN.md
+++ b/docs/deploy.zh-CN.md
@@ -85,6 +85,5 @@ $ yarn install
 $ yarn build
 ```
 
-5. 如果第 4 步成功的话,那么构建后的文件在 `/dist` 目录下,接着我们推荐使用 `nginx` 处理这些文件,请手动安装 `nginx` 并参考 
`compose/dashboard_conf/nginx.conf` 配置。
-
-6. 移动 `dist` 目录下的文件到 nginx 的默认 html 目录,然后在浏览器中访问 `http://127.0.0.1`。
+5. 如果第 4 步成功的话,那么构建后的文件在 `/dist` 目录下。
+6. 移动 `dist` 目录下的文件到 manager-api 的 `dist` 目录下,然后在浏览器中访问 
`http://127.0.0.1:8080`,`8080` 是 manager-api 的默认监听端口。

Reply via email to