开发者社区> 问答> 正文

使用 docker 部署 canal-server 无法使用 docker-restart 命令

现象

当使用 docker 部署官方 canal-server 镜像(canal/canal-server:v1.1.0)并成功启动后,调用

docker restart

会有以下错误信息:

mv: cannot stat `/home/admin/canal-server/conf/example': No such file or directory

原因

检查 docker 启动脚本,发现 https://github.com/alibaba/canal/blob/master/docker/image/admin/app.sh 的 84-92 行引发的错误:

destination=perl -le 'print $ENV{"canal.destinations"}' if [[ "$destination" =~ ',' ]]; then echo "multi destination:$destination is not support" exit 1; else if [ "$destination" != "" ] && [ "$destination" != "example" ] ; then mv /home/admin/canal-server/conf/example /home/admin/canal-server/conf/$destination fi fi

这里的行为是每次启动时,如果指定了 destination 且 destination 的值不是 example,会把

/home/admin/canal-server/conf/example

目录重命名为指定的 destination 值。 由于我指定了 destination 且值不是 example,所以这个行为导致了执行

docker restart

时,由于容器内已经没有 example 文件夹,所以容器无法启动。

问题

各位大佬是如何解决这个问题的?自己打镜像还是有其他姿势?

原提问者GitHub用户fotguuu

展开
收起
Java工程师 2023-05-08 19:05:07 116 0
1 条回答
写回答
取消 提交回答
  • mv操作做了下判断目录存在处理

    原回答者GitHub用户agapple

    2023-05-09 19:05:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
应用 Docker 进行持续交付:用技术改变交付路程 立即下载
从Docker到容器服务 立即下载
Docker@Alibaba——超大规模Docker化的实战经验 立即下载