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

Jenkins流水线中Docker Compose报UnicodeDecodeError如何解决?

解决Jenkins流水线中Docker Compose的UnicodeDecodeError问题

我之前也碰到过类似的报错,结合你给出的信息,这个问题主要是老版本Docker Compose的编码兼容性缺陷加上命令参数符号错误导致的,咱们一步步来解决:

问题根源分析

你看到的错误信息里的$'\342\200\223f'和$'\342\200\223rm',其实是Shell把**全角长破折号(–)**解析成了非ASCII字节,而Docker Compose 1.9.0这个非常老旧的版本(2017年发布)对非ASCII字符的处理存在bug,直接触发了UnicodeDecodeError。另外你命令里的-rm参数也是错误的,docker-compose run的正确清理参数是--rm(两个英文短横线)。

具体解决步骤

1. 修正命令行参数符号

先把你的执行命令改成完全使用英文短横线的正确格式:

docker-compose -f ./jenkins/docker-compose.yml run --rm redis

重点确认:

  • -f是单个英文短横线加参数名
  • --rm是两个英文短横线加参数名,这是Docker Compose的标准长参数格式

2. 升级Docker Compose版本(强烈推荐)

Docker Compose 1.9.0太老了,不仅有编码问题,还缺少很多新特性和bug修复。建议升级到v2.x系列的稳定版本,比如最新的v2.20.x:

  • 在Jenkins节点上执行卸载旧版本的命令(如果是二进制安装的话):
    sudo rm /usr/local/bin/docker-compose
    
  • 安装新版本:
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
    (如果是用包管理器安装的,比如apt/yum,直接对应更新即可)

3. 确保Jenkins执行环境用UTF-8编码

在Jenkins的全局配置里添加环境变量,避免编码解析错误:

  • 进入Jenkins -> 系统管理 -> 系统配置 -> 全局属性
  • 勾选“环境变量”,添加以下两个变量:
    • 变量名:LANG,值:en_US.UTF-8
    • 变量名:LC_ALL,值:en_US.UTF-8

验证

执行修正后的命令,或者升级Docker Compose后再运行,应该就能正常拉起Redis容器,不会再出现Unicode解码错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:43:15