使用“locale-gen”和“update-locale”添加语言环境后,“locale -a”中未显示语言环境

使用“locale-gen”和“update-locale”添加语言环境后,“locale -a”中未显示语言环境

我目前正在开展一个使用python:latestdocker 镜像运行测试的项目,因为我的项目需要使用语言环境en_US.UTF-8,所以nl_NL.UTF-8我必须将它们添加到我的 CI 脚本中。

但是,每当我尝试添加它们时,它们都不会显示在我的语言环境输出中(我的代码也无法使用它们)。有人知道我在这里做错了什么吗?

root@90a95fe4f532:/# locale -a
C
C.UTF-8
POSIX
root@90a95fe4f532:/# locale-gen en_US.UTF-8
Generating locales (this might take a while)...
Generation complete.
root@90a95fe4f532:/# locale-gen nl_NL.UTF-8
Generating locales (this might take a while)...
Generation complete.
root@90a95fe4f532:/# update-locale
root@90a95fe4f532:/# locale -a
C
C.UTF-8
POSIX
root@90a95fe4f532:/# locale-gen nl_NL.UTF-8
Generating locales (this might take a while)...
Generation complete.
root@90a95fe4f532:/# locale -a
C
C.UTF-8
POSIX

我的图像设置如下:

$ docker pull python:latest
$ docker create python:latest --name python
$ docker run -it python /bin/bash

答案1

正确设置区域设置的最佳方法是通过 DockerfileENV设置。

创建 Dockerfile,内容如下:

FROM python:latest
RUN apt-get clean && apt-get update && apt-get install -y locales
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    locale-gen
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8

然后从 python docker image 创建一个新镜像。我们将其标记为 v1

# docker build -t python:v1 .

运行测试:

# docker run -it --rm --name test python:v1 /bin/bash

如果您检查您的语言环境,它应该反映正确的设置。

root@ee85b63d6ddf:/# locale -a
C
C.UTF-8
en_US.utf8
POSIX

阅读更多关于 Aquasec 的信息Docker 容器管理指南内容涵盖从基础管理到高级主题。

相关内容