From 589c0404d2dc40aa7f526f2699aa4f1511e162b3 Mon Sep 17 00:00:00 2001 From: Gucheng Wang Date: Sun, 12 Dec 2021 23:42:40 +0800 Subject: [PATCH] Fix dataSourceName config to use correct DB host in Docker. --- authz/authz.go | 3 ++- conf/conf.go | 33 +++++++++++++++++++++++++++++++++ docker-compose.yml | 2 ++ object/adapter.go | 3 ++- original/adapter.go | 3 ++- 5 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 conf/conf.go diff --git a/authz/authz.go b/authz/authz.go index 52321ad7..8e276582 100644 --- a/authz/authz.go +++ b/authz/authz.go @@ -18,6 +18,7 @@ import ( "github.com/astaxie/beego" "github.com/casbin/casbin/v2" "github.com/casbin/casbin/v2/model" + "github.com/casbin/casdoor/conf" xormadapter "github.com/casbin/xorm-adapter/v2" stringadapter "github.com/qiangmzsx/string-adapter/v2" ) @@ -27,7 +28,7 @@ var Enforcer *casbin.Enforcer func InitAuthz() { 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 { panic(err) } diff --git a/conf/conf.go b/conf/conf.go new file mode 100644 index 00000000..c9d06ada --- /dev/null +++ b/conf/conf.go @@ -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 +} diff --git a/docker-compose.yml b/docker-compose.yml index 34ed0154..e5aba86c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,8 @@ services: - "8000:8000" depends_on: - db + environment: + RUNNING_IN_DOCKER: true volumes: - ./conf:/conf/ db: diff --git a/object/adapter.go b/object/adapter.go index da61dcf0..01b78dff 100644 --- a/object/adapter.go +++ b/object/adapter.go @@ -19,6 +19,7 @@ import ( "runtime" "github.com/astaxie/beego" + "github.com/casbin/casdoor/conf" _ "github.com/go-sql-driver/mysql" // db = mysql //_ "github.com/lib/pq" // db = postgres "xorm.io/xorm" @@ -36,7 +37,7 @@ func InitConfig() { } 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() } diff --git a/original/adapter.go b/original/adapter.go index 7a2bfc41..681b2f98 100644 --- a/original/adapter.go +++ b/original/adapter.go @@ -16,6 +16,7 @@ package original import ( "github.com/astaxie/beego" + "github.com/casbin/casdoor/conf" "github.com/casbin/casdoor/object" _ "github.com/go-sql-driver/mysql" // db = mysql //_ "github.com/lib/pq" // db = postgres @@ -36,7 +37,7 @@ func InitAdapter() bool { 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) return true }