运行 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
容器和 python3
、java
和 ruby
。
您需要正确设置 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 文件中添加以上一行对我有用
应用程序在我自己的 PC 上运行良好,但当它部署到 docker 时,由于无效字符而失败。
我正在使用 ubuntu:latest
容器和 python3
、java
和 ruby
。
您需要正确设置 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 文件中添加以上一行对我有用