Browse Source

Containerize QMPlusServer

xunmao 5 years ago
parent
commit
16147326a2
4 changed files with 54 additions and 5 deletions
  1. 16 0
      QMPlusServer/Dockerfile
  2. 6 3
      QMPlusServer/init/qmsql/initMysql.go
  3. 21 2
      QMPlusServer/main.go
  4. 11 0
      docker-compose.yml

+ 16 - 0
QMPlusServer/Dockerfile

@@ -0,0 +1,16 @@
+FROM golang:1.12 AS build
+
+WORKDIR /go/src/gin-vue-admin
+COPY . .
+
+ENV GO111MODULE=on
+ENV GOPROXY=https://goproxy.cn
+RUN go get ./... \
+    && go build -o gin-vue-admin
+
+FROM golang:1.12 AS serve
+
+COPY --from=build /go/src/gin-vue-admin /go/src/gin-vue-admin
+
+EXPOSE 8080
+ENTRYPOINT [ "./gin-vue-admin" ]

+ 6 - 3
QMPlusServer/init/qmsql/initMysql.go

@@ -1,10 +1,12 @@
 package qmsql
 
 import (
-	"gin-vue-admin/config"
+	"log"
+
 	"github.com/jinzhu/gorm"
 	_ "github.com/jinzhu/gorm/dialects/mysql"
-	"log"
+
+	"gin-vue-admin/config"
 )
 
 var DEFAULTDB *gorm.DB
@@ -12,7 +14,8 @@ var DEFAULTDB *gorm.DB
 //初始化数据库并产生数据库全局变量
 func InitMysql(admin config.MysqlAdmin) *gorm.DB {
 	if db, err := gorm.Open("mysql", admin.Username+":"+admin.Password+"@("+admin.Path+")/"+admin.Dbname+"?"+admin.Config); err != nil {
-		log.Printf("DEFAULTDB数据库启动异常%S", err)
+		// 数据库初始化失败时,直接退出程序
+		log.Fatalf("DEFAULTDB数据库启动异常: %s", err)
 	} else {
 		DEFAULTDB = db
 		DEFAULTDB.DB().SetMaxIdleConns(10)

+ 21 - 2
QMPlusServer/main.go

@@ -1,6 +1,8 @@
 package main
 
 import (
+	"os"
+
 	"gin-vue-admin/cmd"
 	"gin-vue-admin/config"
 	"gin-vue-admin/init/initRedis"
@@ -19,9 +21,26 @@ import (
 // @name x-token
 // @BasePath /
 
+var (
+	mysqlHost = os.Getenv("MYSQLHOST")
+	mysqlPort = os.Getenv("MYSQLPORT")
+)
+
 func main() {
-	qmlog.InitLog()                                            // 初始化日志
-	db := qmsql.InitMysql(config.GinVueAdminconfig.MysqlAdmin) // 链接初始化数据库
+	qmlog.InitLog() // 初始化日志
+
+	// 可以通过环境变量来覆盖默认值
+	// 未设定有效的环境变量时,使用默认值
+	mysqlConfig := config.GinVueAdminconfig.MysqlAdmin
+	if mysqlHost == "" {
+		mysqlHost = "localhost"
+	}
+	if mysqlPort == "" {
+		mysqlPort = "3306"
+	}
+	mysqlConfig.Path = mysqlHost + ":" + mysqlPort
+
+	db := qmsql.InitMysql(mysqlConfig) // 链接初始化数据库
 	if config.GinVueAdminconfig.System.UseMultipoint {
 		_ = initRedis.InitRedis() // 初始化redis服务
 	}

+ 11 - 0
docker-compose.yml

@@ -16,3 +16,14 @@ services:
       MYSQL_ROOT_PASSWORD: Aa@6447985
       MYSQL_DATABASE: qmPlus
     user: root
+  server:
+    build: ./QMPlusServer
+    ports:
+      - 8080:8080
+      - 8888:8888
+    environment:
+      MYSQLHOST: database
+    working_dir: /go/src/gin-vue-admin
+    restart: always
+    depends_on:
+      - database