How to set the locale inside a Debian/Ubuntu Docker container?
Put in your Dockerfile something adapted from
# Set the localeRUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ locale-genENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8
If you run Debian or Ubuntu, you also need to install locales
to have locale-gen
with
apt-get -y install locales
this is extracted from the very good post on that subject, from
Those who use Debian also have to install locales
package.
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y localesRUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8ENV LANG en_US.UTF-8
This answer helped me a lot.
Just add
ENV LANG C.UTF-8ENV LC_ALL C.UTF-8
into your Dockerfile. (You may need to make sure the locales
package is installed.) Nothing else is needed for the basic operation.Meanwhile, outside of Ubuntu, locale-gen
doesn’t accept any arguments, that’s why none of the ‘fixes’ using it work e.g. on Debian. Ubuntu have patched locale-gen
to accept a list of locales to generate but the patch at the moment has not been accepted in Debian of anywhere else.