Подтвердить что ты не робот

Проблемы с кодированием при запуске приложения в докере (Python, Java, Ruby,...) с контейнерами Ubuntu (ascii, utf-8)

На моем собственном ПК приложение работает хорошо, но когда оно развертывается в докере, оно терпит неудачу из-за недопустимых символов.

Я использую контейнер ubuntu:lastest и python3, java и ruby.

4b9b3361

Ответ 1

Вам необходимо установить язык правильно.

Это минимальный правильный 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

Обычные изображения докеров не указывают локали. Вы увидите это, если зайдете в нее и выполните locale:

sudo docker exec -i -t yowsup3 bash
Источники

:

Ответ 2

Я попробовал описанное выше решение и обнаружил, что команда locale-gen недоступна в моем докере.

поэтому добавьте эту строку над командой RUN или добавьте ее.

RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8

теперь это будет работать.

и второго ENV LC_ALL en_US.UTF-8 достаточно, чтобы установить большую часть переменной, но он остался с двумя свободными, поэтому нам нужно установить все 3.