1. 简介
该项目是fork自github上别人的项目再进行调整修改的,目标是定制化自己的Mongo BI Connector镜像,主要的改动有:将Mongo连接配置化(新建conf文件夹)、新增修改schema字段名的脚本(新建script文件夹)、新增Makefile(方便构建)。项目地址:https://gitee.com/chilson/docker-mongo-bi-connector
2. 构建镜像
- clone项目并删除不必要的目录和文件schema/*、config/*
- 修改MakeFile的REGISTRY,修改成自己的仓库地址
- 在config目录下新建mongosqld-conf.yaml,参照官网(https://docs.mongodb.com/bi-connector/master/reference/mongosqld/#mongosqld-command-line-options, 记得指定schema目录)
- 在schema目录下生成schema文件,参照官网(https://docs.mongodb.com/bi-connector/master/reference/mongodrdl/ ):
mongodrdl --host *** --port *** --db *** --collection *** -o ***.yaml -u *** -p '***' -s *** --authenticationDatabase=*** --preJoined
- 登录docker仓库: *** login
- 进入项目目录,执行sudo make build
- 完成之后,通过docker images看一下是否已经成功,再另一台机器通过docker pull,看一下能否拉到push上去的image
- 注意点:生成schema文件的时候如果有密码验证,记得加 --authenticationDatabase=<你的认证库>
3. 应用部署
- 启动容器:
docker run -d -p <yourport>:3307 -v <yourpath>/schema:/etc/mongodb-bi-connector/schema -v <yourpath>/config:/etc/mongodb-bi-connector/config <yourimages>
- 进入容器执行以下脚本转换一下schema:
cd /etc/mongodb-bi-connector/script python3 format_schema.py
- 退出容器并重启
- 注意点:schema和config目录一定要挂载出来(方便后面修改配置),然后挂载的目录生成对应的配置
4. 连接:
- DBeaver:
- spark:
jdbc:mysql:// j d b c H o s t n a m e : {jdbcHostname}: jdbcHostname:{jdbcPort}/${jdbcDatabase}?useSSL=false&authenticationPlugins=org.mongodb.mongosql.auth.plugin.MongoSqlAuthenticationPlugin&mechanism=SCRAM-SHA-1&useCompression=true&useJDBCCompliantTimezoneShift=true
- 注意点:useJDBCCompliantTimezoneShift这个参数一定要加,解决MongoDB时区问题,具体参数意义看Mysql JDBC参数介绍