Fabric 1.4 beego连接docker mysql

Posted 杰西啊杰西

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fabric 1.4 beego连接docker mysql相关的知识,希望对你有一定的参考价值。

说在前面
由于cenos8安装的mysql8和项目不符,所以这里开一个mysql5.7的docker来使用

一、停止掉本机安装的mysql

停止掉 mysql8 服务

service mysql stop  

二、创建文件夹

找一个地方,创建文件夹conf,db,db是存放数据的,不管你docker重启多少次,只要db文件夹存在(因为是你docker映射的地方,后面会讲),数据就存在

三、在conf文件夹下编写my.cnf数据库配置文件

[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
port=3307  # 为了和本机的区别开

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

四、编写docker-compose

查看docker网络,使用pic_network

 docker network ls

注意,如果要和本主机使用同样的网络,host就行

version: '2'
services:
    mysql:
        network_mode: "perinfo_network"
        container_name: "pic_mysql"
        image: "docker.io/mysql:5.7"
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: xxxxxx #你的root密码
            MYSQL_ROOT_HOST: "%"
            TZ: Asia/Shanghai  
        volumes:
            - "./db:/var/lib/mysql"
            - "./conf/my.cnf:/etc/my.cnf"
        ports:
            - "3307:3307" 

五、启动docker

输出日志法

docker-compose up

后台启动法

docker-compose up -d

六、进入docker的mysql,创建host为127.0.0.1的用户并授权

1、进入docker

docker exec -it pic_mysql bash #pic_mysql是你的容器名,使用容器id也可

2、进入mysql

mysql -u root -p

3、使用mysql数据库

use mysql;

4、创建host为127.0.0.1的用户

create user 'root'@'127.0.0.1' identified by 'xxxxxx';  # xxxxxx是你的root密码

5、查看user

select user,host from user;


6、授权
参考博客:https://www.cnblogs.com/kerrycode/p/7597258.html

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION

7、更新

flush privileges;

PS:这些步骤其实可以使用init文件完成
① 创建文件夹init(Makefile不管他)

② 在init文件夹下创建init.sql文件(随便你取啥子.sql)
这些是创建容器后初始化的sql命令

use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'perinfo68';
flush privileges;
create database pic;

③ 修改docker-compose.yaml文件,映射入口初始化

version: '2'
services:
    mysql:
        network_mode: "perinfo_network"
        container_name: "pic_mysql"
        image: "docker.io/mysql:5.7"
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: perinfo68
            MYSQL_ROOT_HOST: "%"
            TZ: Asia/Shanghai  
        volumes:
            - "./db:/var/lib/mysql"
            - "./conf/my.cnf:/etc/my.cnf"
            - "./init:/docker-entrypoint-initdb.d/"  # 增加了这一句
        ports:
            - "3307:3307"

然后启动docker-compose up -d即可

七、连接navicat

八、beego连接数据库

查看docker容器的ip地址(因为在pic_network网络中,所以肯定和host网络不同)

docker inspect pic_mysql


在conf/mysql.conf中如下配置

######数据库配置######
#mysql
mysqladmin = "root"
mysqlPwd = "xxxxxxxx" 
mysqlUrl = "192.168.224.2:3307"
mysqlDB = "pic"

注意:如果docker使用的是host网络,没有使用pic_network网络,那么mysqlUrl就是“127.0.0.1”

同时,gorm的连接语句也要改为

func init() {
	mysqladmin := beego.AppConfig.String("mysqladmin")
	mysqlPwd := beego.AppConfig.String("mysqlPwd")
	mysqlDB := beego.AppConfig.String("mysqlDB")
	mysqlUrl :=beego.AppConfig.String("mysqlUrl")
	DB, err =
		gorm.Open("mysql", mysqladmin+":"+mysqlPwd+"@tcp("+mysqlUrl+")"+"/"+mysqlDB+"?charset=utf8"+
			"&parseTime=True&loc=Local")
	if err != nil {
		logs.Error(err)
		logs.Error("连接MySql数据库失败")
	} else {
		logs.Info("连接MySql数据库成功")
	}
	DB.AutoMigrate(
		//你的数据库表
	)
}

九、启动beego连接成功

bee run


postman接口测试成功

navicat可以看到创建的表

番外二:Fabric1.4 beego-docker部署

以上是关于Fabric 1.4 beego连接docker mysql的主要内容,如果未能解决你的问题,请参考以下文章

Fabric1.4 beego-docker部署

Fabric1.4 beego-docker部署

离线安装和实例化fabric java chaincode

菜鸟系列Fabric——Fabric 1.4共识机制

Hyperledger Fabric 1.4 快速环境搭建

Hyperledger Fabric 1.4环境搭建详尽