1

我有一个引用 .env 文件的 docker-compose 文件,如下所示:

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?

4

1 回答 1

4

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

通过对不同编码的一些摆弄(并且在多次出现 compose 和环境文件时遇到编码问题),我发现 Docker(如果有的话)可以使用 UTF-8。

此外,如果选择 ANSI 作为编码,Docker 将输出带有错误消息的堆栈跟踪: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 字符打印到控制台以与其他系统集成。

TL;DR:是的,Docker 似乎默认为 UTF-8。

于 2021-07-21T11:47:54.483 回答