You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose启动RabbitMQ容器出现sleep无效时间间隔‘3\r’错误是什么原因?

报错原因

你遇到的报错是Shell脚本换行符格式不兼容导致的:
你本地的init.sh脚本是在Windows系统下编辑的,默认使用CRLF(\r\n)作为换行符,而容器内的Linux系统Shell只识别LF(\n)格式的换行符,解析脚本时会把行尾的\r当成内容的一部分,所以解析sleep 3这一行时,会把参数识别为非法的3\r,触发参数错误。

解决方案

你可以任选以下一种方法修复:

  • 调整本地代码编辑器的配置,将init.sh的换行符格式从CRLF改为LF后重新保存,再重新执行docker-compose up --build构建启动即可。常见的VS Code、JetBrains系列编辑器都可以在右下角状态栏直接切换换行符格式。
  • 在Dockerfile中新增自动转换换行符的逻辑,无需修改本地文件,修改后的Dockerfile对应片段如下:
FROM rabbitmq:3-management

RUN mkdir -p /scripts
COPY init.sh /scripts
WORKDIR /scripts
# 新增以下行自动删除脚本中的\r字符
RUN sed -i 's/\r$//' init.sh
RUN chmod +x init.sh
RUN rabbitmq-plugins enable rabbitmq_web_mqtt
ENTRYPOINT ["/bin/bash"]
CMD ["./init.sh"]
  • 如果你本地安装了dos2unix工具,直接在本地项目目录执行dos2unix init.sh转换脚本格式后再重新构建即可。

内容的提问来源于stack exchange,提问作者user17219965

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:06:03