安装环境linux,系统版本ubutun1.6,安装过程遇到些问题,但都顺利通过,参考官方文档:https://github.com/alibaba/canal/wiki/Docker-QuickStart,以下是安装过程:
1、获取最新版本docker镜像,直接获取最新版
docker pull canal/canal-server:latest
2、本地获取canal源代码和编译
git clone github.com/alibaba/canal.git
cd canal/docker && sh build.sh
这时系统会异常Could not read from remote repository.系统默认使用http进行获取
加上https后获取代码正常
git clone https://github.com/alibaba/canal.git
cd canal/docker && sh build.sh
但是出现了新的异常,指令出现了换行,原意是Docker中的run命令,docker引擎无法识别换行符“/”
直接vi canal/Dockerfile 将里面的内容拷贝出来修改,将run命令的“/”去掉,并且不换行
修改前
修改后
再次执行cd canal/docker && sh build.sh,出现新的异常mvn命令未找到,在build镜像的时候,需要使用maven进行打包
要在linux安装,安装过程https://www.cnblogs.com/jimmy-muyuan/p/7895933.html,安装完后在执行cd canal/docker && sh build.sh,一切正常
3、 启动Docker容器,这时直接执行run.sh文件
sh run.sh -e canal.auto.scan=false \
-e canal.destinations=test \
-e canal.instance.master.address=127.0.0.1:3306 \
-e canal.instance.dbUsername=canal \
-e canal.instance.dbPassword=canal \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false \
执行同样异常,这次也是换行符的错,把换行符去掉,再次执行
sh run.sh -e canal.instance.master.address=127.0.0.1:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e canal.instance.connectionCharset=UTF-8 -e canal.instance.tsdb.enable=true -e canal.instance.gtidon=false -e canal.instance.filter.regex=.*\\..*
如果这个时候报错, ,一般在Centos系统可以顺利执行,但在ubutun则报错,是因为sh与bash有些地方不兼容,可以通过以下方法解决
1.执行bash xx.sh
2.执行chmod +x xx.sh对shell脚本赋予执行权限,之后执行./xx.sh
这里使用第一种方法
bash run.sh -e canal.instance.master.address=127.0.0.1:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e canal.instance.connectionCharset=UTF-8 -e canal.instance.tsdb.enable=true -e canal.instance.gtidon=false -e canal.instance.filter.regex=.*\\..*
执行顺利,但是-e参数并没有全部生效,只有canal.destinations=test实例名称有效,于是只能docker exec -it canal-server /bin/bash里面进行配置,配置完后终于成功了,可以连客户端进行使用,下一节讲下Canal-Admin的配置。