使用 Ubuntu 容器(ascii、utf-8)在 docker(Python、Java、Ruby 等)中运行应用时的编码问题
在我自己的PC上,应用程序运行良好,但是当它被部署到docker中时,由于无效字符而失败。
我正在使用容器 和 、 和 。ubuntu:latest
python3
java
ruby
在我自己的PC上,应用程序运行良好,但是当它被部署到docker中时,由于无效字符而失败。
我正在使用容器 和 、 和 。ubuntu:latest
python3
java
ruby
您需要正确设置区域设置。
这是最小的正确 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 映像不指定区域设置。如果你猛烈抨击它并执行它,你会看到它:locale
sudo docker exec -i -t yowsup3 bash
来源:
我尝试了上述解决方案,发现locale-gen命令在我的docker中不可用。
因此,在 RUN 命令上方添加此行或添加它。
RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8
这现在将工作。
和第二个ENV LC_ALL en_US。UTF-8 足以设置大部分变量,但它留下了两个空的变量,所以这就是为什么我们需要所有 3 个变量来设置。