Fix dataSourceName config to use correct DB host in Docker.

This commit is contained in:
Gucheng Wang
2021-12-12 23:42:40 +08:00
parent b2f2674d3e
commit 589c0404d2
5 changed files with 41 additions and 3 deletions

View File

@ -18,6 +18,7 @@ import (
"github.com/astaxie/beego" "github.com/astaxie/beego"
"github.com/casbin/casbin/v2" "github.com/casbin/casbin/v2"
"github.com/casbin/casbin/v2/model" "github.com/casbin/casbin/v2/model"
"github.com/casbin/casdoor/conf"
xormadapter "github.com/casbin/xorm-adapter/v2" xormadapter "github.com/casbin/xorm-adapter/v2"
stringadapter "github.com/qiangmzsx/string-adapter/v2" stringadapter "github.com/qiangmzsx/string-adapter/v2"
) )
@ -27,7 +28,7 @@ var Enforcer *casbin.Enforcer
func InitAuthz() { func InitAuthz() {
var err error var err error
a, err := xormadapter.NewAdapter(beego.AppConfig.String("driverName"), beego.AppConfig.String("dataSourceName")+beego.AppConfig.String("dbName"), true) a, err := xormadapter.NewAdapter(beego.AppConfig.String("driverName"), conf.GetBeegoConfDataSourceName()+beego.AppConfig.String("dbName"), true)
if err != nil { if err != nil {
panic(err) panic(err)
} }

33
conf/conf.go Normal file
View File

@ -0,0 +1,33 @@
// Copyright 2021 The casbin Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package conf
import (
"os"
"strings"
"github.com/astaxie/beego"
)
func GetBeegoConfDataSourceName() string {
dataSourceName := beego.AppConfig.String("dataSourceName")
runningInDocker := os.Getenv("RUNNING_IN_DOCKER")
if runningInDocker != "" {
dataSourceName = strings.ReplaceAll(dataSourceName, "localhost", "host.docker.internal")
}
return dataSourceName
}

View File

@ -8,6 +8,8 @@ services:
- "8000:8000" - "8000:8000"
depends_on: depends_on:
- db - db
environment:
RUNNING_IN_DOCKER: true
volumes: volumes:
- ./conf:/conf/ - ./conf:/conf/
db: db:

View File

@ -19,6 +19,7 @@ import (
"runtime" "runtime"
"github.com/astaxie/beego" "github.com/astaxie/beego"
"github.com/casbin/casdoor/conf"
_ "github.com/go-sql-driver/mysql" // db = mysql _ "github.com/go-sql-driver/mysql" // db = mysql
//_ "github.com/lib/pq" // db = postgres //_ "github.com/lib/pq" // db = postgres
"xorm.io/xorm" "xorm.io/xorm"
@ -36,7 +37,7 @@ func InitConfig() {
} }
func InitAdapter() { func InitAdapter() {
adapter = NewAdapter(beego.AppConfig.String("driverName"), beego.AppConfig.String("dataSourceName"), beego.AppConfig.String("dbName")) adapter = NewAdapter(beego.AppConfig.String("driverName"), conf.GetBeegoConfDataSourceName(), beego.AppConfig.String("dbName"))
adapter.createTable() adapter.createTable()
} }

View File

@ -16,6 +16,7 @@ package original
import ( import (
"github.com/astaxie/beego" "github.com/astaxie/beego"
"github.com/casbin/casdoor/conf"
"github.com/casbin/casdoor/object" "github.com/casbin/casdoor/object"
_ "github.com/go-sql-driver/mysql" // db = mysql _ "github.com/go-sql-driver/mysql" // db = mysql
//_ "github.com/lib/pq" // db = postgres //_ "github.com/lib/pq" // db = postgres
@ -36,7 +37,7 @@ func InitAdapter() bool {
return false return false
} }
adapter = object.NewAdapter(beego.AppConfig.String("driverName"), beego.AppConfig.String("dataSourceName"), dbName) adapter = object.NewAdapter(beego.AppConfig.String("driverName"), conf.GetBeegoConfDataSourceName(), dbName)
createTable(adapter) createTable(adapter)
return true return true
} }