查看非法字符

查看是否文件中包含非法字符

cat -A docker-compose.yaml | head -30

如果看到 M-BM- 或 ^@ 等字符,说明有 BOM。

修复yaml内的特殊字符

直接命令移除bom修复

# 1. 移除 BOM 头
sed -i '1s/^\xEF\xBB\xBF//' docker-compose.yaml

# 2. 移除所有 M-BM- 字符(不可见控制字符)
sed -i 's/\xEF\xBB\xBF//g' docker-compose.yaml
sed -i 's/\xC2\xA0/ /g' docker-compose.yaml

# 3. 统一缩进(将可能的 Tab 转为 2 空格)
sed -i 's/\t/  /g' docker-compose.yaml

# 4. 验证修复
docker compose config

使用 dos2unix 工具

# 安装工具
yum install -y dos2unix  # CentOS/RHEL
# 或
apt-get install -y dos2unix  # Ubuntu/Debian

# 转换文件
dos2unix docker-compose.yaml

# 验证
docker compose config

使用python脚本清理

python3 << 'EOF'
with open('docker-compose.yaml', 'rb') as f:
    content = f.read()

# 移除 BOM
if content.startswith(b'\xef\xbb\xbf'):
    content = content[3:]

# 移除其他不可见字符
content = content.replace(b'\xc2\xa0', b' ')

with open('docker-compose.yaml', 'wb') as f:
    f.write(content)
print("文件已清理")
EOF

docker compose config