我目前正在开展一个使用python:latest
docker 镜像运行测试的项目,因为我的项目需要使用语言环境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 容器管理指南内容涵盖从基础管理到高级主题。