docker-compose 使用的 .env 文件编码

Encoding of .env-files used by docker-compose

我有一个 docker-compose 文件,它引用了这样一个 .env 文件:

version: '2.4'

services:
    MyService:
    #...more in here
        env_file:
             - staging.env

现在在我的 staging.env 中出现了德语变音符号。所以我将该文件保存为没有 BOM 的 UTF-8。我想确保 docker-compose 将始终选择正确的编码,例如,如果暂存环境使用(比如说)与我的开发机器不同的 Windows 版本。

docker-compose 会默认使用 utf-8 吗?那么这对我来说很好解决。否则,如何在docker-compose文件中明确指定env文件的编码是UTF-8?

我正在处理一个非常相似的设置,它还引用了包含来自 docker-compose 文件的某些特殊字符的 *.env 文件。

通过一些摆弄不同的编码(并且在多次出现撰写和环境文件的编码问题)我发现 Docker,如果有的话,将适用于 UTF-8 .

此外,Docker 将输出带有错误消息的堆栈跟踪,例如在我的例子中,ANSI 被选为编码:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 1914: invalid start byte [10196] Failed to execute script docker-compose

因此,我强烈建议在与 Docker 相关的任何内容中默认使用 UTF-8 作为标准编码。

此外,您可能需要查看 docker-compose 的选项 --ansi never(以前称为 -no-ansi),甚至禁止将 ANSI 字符打印到控制台以便与其他系统集成。

长话短说: 是的,Docker 似乎默认为 UTF-8。