参考资料

Dockerfile

Dockerfile文件:https://github.com/alibaba/canal/blob/master/docker/Dockerfile 注意点:

  • 基于centos6.7最小镜像进行构建,安装一些必须的工具,比如tar/dstat/nc/man等,大概400MB
  • 默认安装jdk 1.8,build.sh脚本里会自动下载jdk然后copy到docker里,大概400MB
  • 自带日志清理脚本,会识别硬盘超过80%时,自动清理

因此,canal整个docker镜像在900MB左右,有一定的优化空间,比如使用jre、减少一些非必须的命令等

获取Docker

远程拉取

  1. 访问docker hub获取最新的版本 访问:https://hub.docker.com/r/canal/canal-server/tags/

  2. 下载对应的版本,比如最新版为1.1.1

    1. docker pull canal/canal-server:v1.1.1

本地编译

  1. git clone git@github.com:alibaba/canal.git
  2. cd canal/docker && sh build.sh

启动Docker

docker目录下自带了一个run.sh脚本: https://github.com/alibaba/canal/blob/master/docker/run.sh

  1. sh run.sh
  2. Usage:
  3. run.sh [CONFIG]
  4. example:
  5. run.sh -e canal.instance.master.address=127.0.0.1:3306 \
  6. -e canal.instance.dbUsername=canal \
  7. -e canal.instance.dbPassword=canal \
  8. -e canal.instance.connectionCharset=UTF-8 \
  9. -e canal.instance.tsdb.enable=true \
  10. -e canal.instance.gtidon=false \
  11. -e canal.instance.filter.regex=.*\\..*

实际运行的例子:

  1. # 下载脚本
  2. wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run.sh
  3. # 构建一个destination name为test的队列
  4. sh run.sh -e canal.auto.scan=false \
  5. -e canal.destinations=test \
  6. -e canal.instance.master.address=127.0.0.1:3306 \
  7. -e canal.instance.dbUsername=canal \
  8. -e canal.instance.dbPassword=canal \
  9. -e canal.instance.connectionCharset=UTF-8 \
  10. -e canal.instance.tsdb.enable=true \
  11. -e canal.instance.gtidon=false \

注意点:

  • -e参数里可以指定以前canal.properties/instance.properties里的所有配置的key和value,canal-server启动时会有限读取-e指定的变量,具体可参考AdminGuide
  • docker模式下,单docker实例只能运行一个instance,主要为配置问题。如果需要运行多instance时,可以自行制作一份docker镜像即可

运行效果

image.png | left | 747x332

看到successful之后,就代表canal-server启动成功,可以启动canal-client链接上来进行binlog订阅了