运行 docker 中的应用程序(Python、Java、Ruby、...)与 Ubuntu 容器(ascii、utf -8)

Encoding Problems when running an app in docker (Python, Java, Ruby, ...) with Ubuntu Containers (ascii, utf-8)

应用程序在我自己的 PC 上运行良好,但当它部署到 docker 时,由于无效字符而失败。

我正在使用 ubuntu:latest 容器和 python3javaruby

您需要正确设置 locale

这是最小的正确 Dockerfile:

FROM ubuntu:latest

RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

通常的 docker 图像不指定语言环境。如果你 bash 进入它并执行 locale:

你就会看到它
sudo docker exec -i -t yowsup3 bash

来源:

我尝试了上述解决方案,发现 locale-gen 命令在我的 docker 中不可用。

所以把这一行加在运行命令上面,或者把它加进去。

RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8

现在可以使用了。

和第二个 ENV LC_ALL en_US.UTF-8 足以设置大部分变量,但它留下了两个空缺,所以这就是为什么我们需要设置所有 3 个。

FROM centos:7 

ENV LANG=en_US.UTF-8

在 docker 文件中添加以上一行对我有用