1

В настоящее время я работаю над проектом, который использует образ 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 ответ1

2

Лучший способ правильно установить локаль - через настройки Dockerfile ENV .

Создайте 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. Мы отметим это 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. Руководства по администрированию , охватывающие базовое администрирование и расширенные темы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .