Проблемы с кодированием при запуске приложения в докере (Python, Java, Ruby,...) с контейнерами Ubuntu (ascii, utf-8)
На моем собственном ПК приложение работает хорошо, но когда оно развертывается в докере, оно терпит неудачу из-за недопустимых символов.
Я использую контейнер ubuntu:lastest
и python3
, java
и ruby
.
Ответы
Ответ 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.