docker-compose.yml

  1. version: '3'
  2. services:
  3. canal-server:
  4. image: canal/canal-server
  5. container_name: canal-server
  6. ports:
  7. - 11111:11111
  8. environment:
  9. - canal.admin.manager=192.168.1.5:8089
  10. - canal.admin.port=11110
  11. - canal.admin.user=admin
  12. - canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441
  13. - canal.destinations=example
  14. - canal.instance.master.address=192.168.1.5:3306
  15. - canal.instance.dbUsername=canal
  16. - canal.instance.dbPassword=canal
  17. - canal.instance.filter.regex=canal_db.*
  18. volumes:
  19. - ./data/canal-server/logs/:/home/admin/canal-server/logs/
  20. depends_on:
  21. - canal-admin
  22. canal-admin:
  23. image: canal/canal-admin
  24. container_name: canal-admin
  25. ports:
  26. - 8089:8089
  27. environment:
  28. - server.port=8089
  29. - canal.adminUser=admin
  30. - canal.adminPasswd=admin
  31. volumes:
  32. - ./data/canal-admin/logs/:/home/admin/canal-admin/logs

启动

  1. docker-compose up -d

停止服务

  1. docker-compose stop

停止并删除服务

  1. docker-compose down

:::warning 该yaml存在的问题:
canal-server依赖于canal-admin启动,启动时会去连接canal-admin,但通过depends_on制定的依赖关系仅保证创建,而不会判断依赖项是否健康或者启动完毕,所以,此时canal-admin可能并未完全启动,导致访问不了,启动失败,需要等canal-admin启动完全可以访问之后,手动启动一次canal-server。
解决办法貌似可以自己写wait-for-it.sh脚本实现,后续再补充吧。🤪 :::