【问题标题】:Encoding of .env-files used by docker-composedocker-compose 使用的 .env 文件的编码
【发布时间】:2021-06-10 10:14:18
【问题描述】:

我有一个 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?

【问题讨论】:

标签: unicode docker-compose character-encoding env-file


【解决方案1】:

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

通过对不同编码的一些摆弄(并且在多次出现 compose 和环境文件时遇到编码问题),我发现 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 字符打印到控制台以与其他系统集成。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2019-10-21
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多