docker-compose up: utf-8 编解码无法解码 X 字节。

4
每次我在我的机器上运行docker-compose up时(macOS 10.13.5,最新的docker版本),都会出现以下错误:
回溯(最近的调用):文件“docker-compose”,第6行, 文件“compose/cli/main.py”,第71行,在 文件“compose/cli/main.py”,第124行,在执行命令时 文件“compose/cli/command.py”,第41行,通过选项获取项目 文件“compose/cli/command.py”,第126行,在获取项目 文件“compose/project.py”中,第96行,从配置中获取 文件“compose/network.py”,第320行,获取网络 文件“compose/network.py”,第125行,真实名称 文件“compose/network.py”,第146行,_set_legacy_flag 文件“compose/network.py”,第106行,检查 文件“site-packages/docker/utils/decorators.py”,第19行,包装 文件“site-packages/docker/api/network.py”,第211行,检查网络 文件“site-packages/docker/utils/decorators.py”,第46行,内部 文件“site-packages/docker/api/client.py”,第194行,获取 文件“site-packages/requests/sessions.py”,第521行,获取 文件“site-packages/requests/sessions.py”,第494行,请求 文件“site-packages/requests/sessions.py”,第424行,准备请求 文件“site-packages/requests/utils.py”,第195行,获取netrc_auth 文件“netrc.py”,第33行,在初始化 文件“netrc.py”,第42行,_parse 文件“shlex.py”,第105行,获取令牌 文件“shlex.py”,第136行,读取令牌 文件“/Users/distiller/compose-osx-release/compose/venv/lib/python3.6/codecs.py”,第321行,在解码时出现UnicodeDecodeError:'utf-8' codec can't decode byte 0x80 in position 33: invalid start byte。

我的第一反应是这个错误意味着它所说的:你的系统中某个文件(也许不是 docker-compose.yml)中有字节 0x80,而且它不是 UTF-8 编码的文本。 - David Maze
5个回答

4

好的,显然当前版本的docker-compose在macOS上存在问题...这只是我的猜测,不管怎样,以下是我解决问题的方法

curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

然后重新启动终端。

1
我遇到了同样的问题,这可能也与你的.env文件有关。请确保您的.env文件是UTF-8编码。
sudo apt install moreutils
isutf8 yourfile.env

如果isutf8没有返回任何输出,则很可能是一个有效的UTF-8文件。
此外,请检查您在docker-compose.yml中引用的.env文件的内容。您可能在本地使用了任何错误解密的秘密/值,这也可能导致此问题。
如果有疑问,请清除env文件并重新添加行,直到出现错误。

0
我的解决方法是在我运行docker-compose的目录中创建一个空的.env文件(编码为UTF-8)。

1
如果它是空的,它就没有编码。 - tripleee
@tripleee 听起来很合理,是的。Notepad++ 无论如何都会显示 UTF-8 编码。所以我想添加这个。 - Tobias

0
我有两个想法: 1. 尝试重新安装你的 Python 2. 使用最新的稳定版 Docker,而不是最新版本。

我会尝试重新安装Python2,Docker已经是最新的稳定版本。 - Ebram Sherif
问题涉及到Python3.6,位于"/Users/distiller/compose-osx-release/compose/venv/lib/python3.6/codecs.py"。 - tkrishtop
我重新安装了Python2只是为了确认一下。但无论如何,我知道这不是问题所在,因为我的机器上没有安装Python3。看来Docker有它自己的Python环境...Distiller不是我机器上的用户。 - Ebram Sherif
@EbramSherif 请检查您的git设置。也许您有Windows行结尾。https://dev59.com/IWkv5IYBdhLWcg3wsC3i - tkrishtop

0

你需要进入pycharm的env文件,双击它并安装python env文件。然后再次运行代码[docker-compose up airflow-init],它就会正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接