docker-compose.yml
version: '3'
services:
canal-server:
image: canal/canal-server
container_name: canal-server
ports:
- 11111:11111
environment:
- canal.admin.manager=192.168.1.5:8089
- canal.admin.port=11110
- canal.admin.user=admin
- canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441
- canal.destinations=example
- canal.instance.master.address=192.168.1.5:3306
- canal.instance.dbUsername=canal
- canal.instance.dbPassword=canal
- canal.instance.filter.regex=canal_db.*
volumes:
- ./data/canal-server/logs/:/home/admin/canal-server/logs/
depends_on:
- canal-admin
canal-admin:
image: canal/canal-admin
container_name: canal-admin
ports:
- 8089:8089
environment:
- server.port=8089
- canal.adminUser=admin
- canal.adminPasswd=admin
volumes:
- ./data/canal-admin/logs/:/home/admin/canal-admin/logs
启动
docker-compose up -d
停止服务
docker-compose stop
停止并删除服务
docker-compose down
:::warning
该yaml存在的问题:
canal-server依赖于canal-admin启动,启动时会去连接canal-admin,但通过depends_on制定的依赖关系仅保证创建,而不会判断依赖项是否健康或者启动完毕,所以,此时canal-admin可能并未完全启动,导致访问不了,启动失败,需要等canal-admin启动完全可以访问之后,手动启动一次canal-server。
解决办法貌似可以自己写wait-for-it.sh脚本实现,后续再补充吧。🤪
:::